In a CarPlay app using the driving-task entitlement, an enabled CPButton in a CPListTemplateDetailsHeader does not respond across its full visible area. Tapping the upper part of the button (above the title text) invokes the handler. Tapping the text, or the area below it, does nothing.
I can reproduce this in both the CarPlay Simulator and on a real CarPlay display.
Environment
Xcode 27.0 (27A266a), macOS 27.0
iOS 27.0
Entitlement: com.apple.developer.carplay-driving-task
Sample project
A minimal project that reproduces it is attached.
It builds a CPListTemplate with a CPListTemplateDetailsHeader containing a single action button ("Continue Trip" on the trip screen, "Next Stop" on the day screen). When the handler fires, the app presents a CPAlertTemplate, logs to the console, and increments a counter on the phone screen, so a successful tap is unambiguous.
Relevant code
let image = UIImage(systemName: "calendar.badge.clock") ?? UIImage()
let button = CPButton(image: image) { [weak self] _ in
self?.showAlert("Continue Trip handler called")
}
button.title = "Continue Trip"
button.isEnabled = true
let header = CPListTemplateDetailsHeader(
thumbnail: thumbnail,
title: "Coastal Road Trip",
subtitle: "Sep 23 – Sep 25",
bodyVariants: bodyVariants.map { NSAttributedString(string: $0) },
actionButtons: [button]
)
header.wantsAdaptiveBackgroundStyle = true
let template = CPListTemplate(title: "Coastal Road Trip",
listHeader: header,
sections: [],
assistantCellConfiguration: nil)
Steps to reproduce
- Run the project on an iOS 27 iPhone with CarPlay connected, or use the CarPlay Simulator.
- Open the app on CarPlay and select Coastal Road Trip from Trips.
- Tap different parts of the Continue Trip button in the header. After a successful tap, dismiss the alert and try another part of the button.
- Select a day card and repeat with Next Stop in the day details header.
- Compare taps that show the alert / log a console message with taps that produce no response.
Expected: the action fires when any part of the visible, enabled button is tapped.
Actual: only part of the button (the upper region) fires the handler. The tappable area appears misaligned with the visible button.
What I've checked
The header and button are the system-provided CPListTemplateDetailsHeader and CPButton, so I have no access to the underlying view hierarchy or constraints. An overlapping view of my own is not possible.
The button is enabled and has both an image and a title.
Questions
- Is this a known issue with CPListTemplateDetailsHeader action buttons in iOS 27?
- Is there any supported configuration (image-only button, different image size, no bodyVariants, etc.) that avoids the misaligned hit area?
Apple DTS case: 22419931.
Thanks!