我正在尝试实现铅笔工具包(一根铅笔,橡皮等)它出现在屏幕的底部。但是,在运行这行代码时:
guard let window = view.window, let toolPicker = PKToolPicker.shared(for: window)
else {return}我在日志中看到以下错误,toolpicker没有出现:
PDF Reader[926:85385] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(
"<NSLayoutConstraint:0x60000191d450 UIView:0x7fdfb7376ff0.height == 75 (active)>",
"<NSLayoutConstraint:0x60000191d4a0 V:|-(0)-[UIView:0x7fdfb7376ff0] (active, names: '|':PKPaletteContainerView:0x7fdfb737b7e0 )>",
"<NSLayoutConstraint:0x60000191dae0 V:|-(0)-[PKPaletteContainerView:0x7fdfb737b7e0] (active, names: '|':UIView:0x7fdfb46181d0 )>",
"<NSLayoutConstraint:0x60000191dc70 PKPaletteContainerView:0x7fdfb737b7e0.bottom == UIView:0x7fdfb46181d0.bottom (active)>",
"<NSLayoutConstraint:0x600001901ea0 V:|-(0)-[UIView:0x7fdfb46181d0] (active, names: '|':PKPaletteView:0x7fdfb462d3e0 )>",
"<NSLayoutConstraint:0x600001901ef0 UIView:0x7fdfb46181d0.bottom == PKPaletteView:0x7fdfb462d3e0.bottom (active)>",
"<NSLayoutConstraint:0x6000019fcf00 PKPaletteView:0x7fdfb462d3e0.height == 122 (active)>",
"<NSLayoutConstraint:0x60000191d720 UIView:0x7fdfb7376ff0.bottom == PKPaletteContainerView:0x7fdfb737b7e0.bottom (active)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x60000191d450 UIView:0x7fdfb7376ff0.height == 75 (active)>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.我真的不确定如何处理PKPalette的约束,或者下面哪些约束是冲突的。我也尝试过禁用translatesAutoResizingMaskIntoConstraints,但它不起作用,因为我的应用程序的其他部分依赖它。感谢您的帮助,谢谢!
发布于 2020-03-18 09:45:38
在iPhone上调用PKToolPicker时,我收到相同的日志消息。在iPad上,我没有得到约束错误。如果我仔细检查约束冲突,它似乎都是PKToolPicker内部的,与我的布局设置无关。
如果您运行相同的代码,但是在横向而不是纵向中使用iPhone,则不会发生冲突。因此,我怀疑PKPickerTool的限制存在某种限制,当屏幕太窄时,苹果需要修复这些限制。我去贴个雷达。
发布于 2020-01-30 14:32:36
这并不是因为约束;您需要调用这些行:
toolPicker.setVisible(true, forFirstResponder: canvasView)
canvasView.becomeFirstResponder()你可以在这里找到更多信息:
https://developer.apple.com/documentation/pencilkit/drawing_with_pencilkit https://developer.apple.com/videos/play/wwdc2019/221/
发布于 2021-06-10 17:42:12
我也有同样的情况。如果你设置了布局断点,我可以看到涉及到的视图都是苹果自己的,它们甚至存在于一个私有的覆盖窗口中,而不是主窗口中。因此,框架中似乎存在一个合法的bug。
我发现对我来说,当我第一次尝试获取工具时,它会失败。为了解决这个问题,我现在只需在发布后很早的时候就得到一次工具。我不使用它们,但这会触发bug,所以当我真的需要这些工具时,它们就会工作。
if #available(iOS 13.0, *) {
PKToolPicker.shared(for: view.window!)
}https://stackoverflow.com/questions/59961602
复制相似问题