UIBarButtonItem在iOS 11 beta 7上无法点击?

Spa*_*Dog 14 uibutton uibarbuttonitem ios11 xcode9beta6

还有另外一个关于此的问题,但这与它无关,因为我认为这与iOS 11的测试版有关.

我有这两个UIButton分组在一个内部UIView.使用Interface Builder 将此UIView置于a中UIBarButtonItem,并将整个内容设置为Left Bar Button Items.

单击时,每个按钮都会显示由故事板触发的弹出窗口.

我正在使用Xcode 8在运行iOS 9的iPad 3上进行测试.这非常有效.

现在我决定在运行iOS 11 beta 7的iPad Pro 9.7上进行测试.我正在使用Xcode 9 beta 6.当我在iPad Pro上运行时,导航栏上的所有按钮都已经死了. t响应点击.现在我尝试使用相同的Xcode 9 beta 6并使用iOS 9在iPad 3上运行应用程序,然后再次完成所有工作.

我正在为iOS 9.1编译.

按钮甚至不突出显示以确认点击,就像在iOS 9上一样.

iOS 11 beta 7和条形按钮项有问题吗?

有任何想法吗?

and*_*rey 16

我发现使用XCode 8构建的相同代码在ios10-11上运行良好,但是当我使用自定义视图使用XCode 9 UIBarButtonItem构建时,不响应点击.

看起来问题出现是因为从ios 11导航栏使用自动布局而不是处理帧.屏幕上的按钮看起来不错,但从技术上讲它们似乎是屏幕外的.

所以我的修复是将自动布局约束添加到我的自定义视图.

//my custom view init
let view = MyCustomView()
view.frame = CGRect(x: 0, y: 0, width: 44, height: 44)
let rightButtonItem = UIBarButtonItem(customView: view)

//constraints
let widthConstraint = view.widthAnchor.constraint(equalToConstant: 44)
let heightConstraint = view.heightAnchor.constraint(equalToConstant: 44)

heightConstraint.isActive = true
widthConstraint.isActive = true

//add my view to nav bar 
self.rightBarButtonItem = rightButtonItem
Run Code Online (Sandbox Code Playgroud)

在该自定义右键按钮成功获得点击后.

  • 很好!谢谢!这是Apple永远无法修复的错误之一.这是我将来留给人们的一条消息,它将处理这个错误. (2认同)

Spa*_*Dog 4

我已经发现问题了!惊人的错误!

这就是演习。我通过这样做向左侧导航项添加了两个按钮:

  1. 创建一个视图
  2. 在该视图中添加两个UIButtons
  3. 将该视图添加到左侧导航项。

这是针对 iOS 9 编译的,适用于 iOS 10 及更低版本的设备,但不适用于 iOS 11。

这样做的“正确”方法是这样的

  1. 将 拖至UIButton左侧导航项。
  2. 将另一个拖动UIButton到左侧导航项。

您将看到 iOS 允许这种情况发生,并将管理“导航项”下的两个按钮。

这适用于我从 9 月到 11 月测试过的所有 iOS 版本。

  • 这并不能解决问题,因为有人可能拥有除内部某些按钮之外的自定义视图。因此,“正确”(至少有效)的解决方案是为“UIBarButtonItem”内的视图设置约束(宽度和高度)。这可以在 viewDidLoad 中手动完成。请参阅 andreylanadelrey 的回答。 (2认同)