关于此问题还有另一个问题,但这与此无关,因为我认为这与 iOS 11 的测试版有关。
我有这 2 个 UIButton
,它们分组在 UIView
内。该 UIView 被放入 UIBarButtonItem
内,并使用 Interface Builder 将整个内容设置为 Left Bar Button Items
。
单击每个按钮时,都会显示一个由 Storyboard触发的弹出窗口。
我正在运行 iOS 9 的 iPad 3 上使用 Xcode 8 进行测试。效果非常好。
现在我决定在运行 iOS 11 beta 7 的 iPad Pro 9.7"上测试这个。我使用的是 Xcode 9 beta 6。当我在 iPad Pro 上运行这个时,导航栏上的所有按钮都失效了。它们不响应点击。现在我尝试相同的 Xcode 9 beta 6 并在装有 iOS 9 的 iPad 3 上运行该应用程序,一切都运行良好。
我正在针对 iOS 9.1 进行编译。
按钮甚至不会像 iOS 9 上那样突出显示以确认点击。
iOS 11 beta 7 和栏按钮项目是否存在问题?
有什么想法吗?
最佳答案
我发现使用 XCode 8 构建的相同代码在 ios10-11 上运行良好,但是当我使用带有自定义 View 的 XCode 9 UIBarButtonItem 构建时,不会响应点击。
看起来出现这个问题是因为从ios 11开始导航栏使用自动布局而不是处理框架。屏幕上的按钮看起来不错,但从技术上讲,它们似乎位于屏幕外。
所以我的解决方法是向我的自定义 View 添加自动布局约束。
//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
自定义右栏按钮成功收到点击后。
关于uibutton - UIBarButtonItem 在 iOS 11 beta 7 上不可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45854203/