iOS 17 Opening the color picker results in an permanently visible PKToolBar

Running my app in iOS 17 has a weird bug. I can draw as usual on my canvas, but only when I open the color picker from the toolPicker a bunch of weird errors and warnings are posted to the console (I am assuming they are related to it.) Closing the color picker and leaving the screen would normally dismiss the toolbar, but now it stays forever and on every screen. Interestingly the canvas, the tool picker and the viewController are all getting deinitialized, which means there is a second/new toolPicker on screen and I have no reference to it.

Here are the mentioned warnings and errors:

Error acquiring assertion: <Error Domain=RBSServiceErrorDomain Code=1 "(originator doesn't have entitlement com.apple.runningboard.primitiveattribute AND originator doesn't have entitlement com.apple.runningboard.assertions.frontboard AND target is not running or doesn't have entitlement com.apple.runningboard.trustedtarget AND Target not hosted by originator)" UserInfo={NSLocalizedFailureReason=(originator doesn't have entitlement com.apple.runningboard.primitiveattribute AND originator doesn't have entitlement com.apple.runningboard.assertions.frontboard AND target is not running or doesn't have entitlement com.apple.runningboard.trustedtarget AND Target not hosted by originator)}>

Received port for identifier response: <> with error:Error Domain=RBSServiceErrorDomain Code=1 "Client not entitled" UserInfo={RBSEntitlement=com.apple.runningboard.process-state, NSLocalizedFailureReason=Client not entitled, RBSPermanent=false}

elapsedCPUTimeForFrontBoard couldn't generate a task port

Received port for identifier response: <> with error:Error Domain=RBSServiceErrorDomain Code=1 "Client not entitled" UserInfo={RBSEntitlement=com.apple.runningboard.process-state, NSLocalizedFailureReason=Client not entitled, RBSPermanent=false}

elapsedCPUTimeForFrontBoard couldn't generate a task port

Received port for identifier response: <> with error:Error Domain=RBSServiceErrorDomain Code=1 "Client not entitled" UserInfo={RBSEntitlement=com.apple.runningboard.process-state, NSLocalizedFailureReason=Client not entitled, RBSPermanent=false}

elapsedCPUTimeForFrontBoard couldn't generate a task port

No setting found for property named "_UISceneHostingClientSettingsExtension"
No setting found for property named "_UISceneHostingClientSettingsExtension"
No setting found for property named "_UISceneHostingClientSettingsExtension"

A code snippet, but nothing fancy:

    private var imageCanvasView = ImageCanvasView()
    private var toolPicker = ToolPicker()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.toolPicker.setVisible(true, forFirstResponder: self.imageCanvasView)
        self.toolPicker.addObserver(self.imageCanvasView)
        self.imageCanvasView.becomeFirstResponder()
    }

Any ideas on how to prevent that or at least access/hide the permanent tool picker?

Answered by Skyn3t in 770086022

It was fixed in iOS 17.1. I am not aware of workarounds for earlier iOS 17 versions.

I'm seeing something similar in SwiftUI when trying to use ColorPicker("(bandName) band colour", selection: $bandColor) I get "RBSServiceErrorDomain Code=1 "Client not entitled" It works in the simulator but not on device.

https://developer.apple.com/documentation/pencilkit/drawing_with_pencilkit

This example project from Apple has the exact same issue! So I assume we will have to wait until Apple fixes it.

Same logs when opening the share sheet on iOS 17.

I've talked to Apple. The bug is now considered serious and there is no workaround for it. Also small addition: It just affects iOS not iPadOS.

Accepted Answer

It was fixed in iOS 17.1. I am not aware of workarounds for earlier iOS 17 versions.

Getting the same error with iOS 17.2. The issue is not fixed. Getting this when the share sheet shows.

Same issue on iPadOS 17.2

We only use a UIColorPickerViewController with aUIColorPickerViewControllerDelegate

Error acquiring assertion: <Error Domain=RBSServiceErrorDomain Code=1 "(originator doesn't have entitlement com.apple.runningboard.primitiveattribute AND originator doesn't have entitlement com.apple.runningboard.assertions.frontboard AND target is not running or doesn't have entitlement com.apple.runningboard.trustedtarget AND Target not hosted by originator)" UserInfo={NSLocalizedFailureReason=(originator doesn't have entitlement com.apple.runningboard.primitiveattribute AND originator doesn't have entitlement com.apple.runningboard.assertions.frontboard AND target is not running or doesn't have entitlement com.apple.runningboard.trustedtarget AND Target not hosted by originator)}>
No setting found for property named "_UISceneHostingClientSettingsExtension"
No setting found for property named "_UISceneHostingClientSettingsExtension"
No setting found for property named "_UISceneHostingClientSettingsExtension"

Same here in iOS 17.4 when opening the share sheet.

Seeing the same thing calling ColorPicker("", selection: $color, supportsOpacity: true).labelsHidden() in a SwiftUI view on iOS 17.2.1.

This issue still remains. Have to rewrite a colorPicker.

If it's fixed in iOS 17, then it's back in iOS 18.1. Literally ColorPicker("Pick Color", selection: $selectedColor) throws the error.

iOS 17 Opening the color picker results in an permanently visible PKToolBar
 
 
Q