17

关于这个还有另一个问题,但这与它无关,因为我认为这与 iOS 11 的 beta 版本有关。

我将这些 2UIButton分组在 aUIView中。这个 UIView 被放在 a 里面UIBarButtonItem,整个东西被设置为Left Bar Button Items,使用 Interface Builder。

单击每个按钮时,都会显示一个由情节提要触发的弹出框。

我正在使用 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 和条形按钮项目是否存在问题?

有任何想法吗?

4

5 回答 5

18

我发现使用 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

在该自定义右栏按钮成功接收点击之后。

于 2017-09-20T16:50:41.757 回答
4

我通过将此方法添加到 UIBarButtonItem 来实现此功能:

[self.barBTNItem setWidth:44];
于 2017-10-27T19:09:48.810 回答
4

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

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

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

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

这样做的“正确”方法是

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

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

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

于 2017-08-30T20:55:15.810 回答
2

轻拍:

UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(manualAdd.dismissKeyboard))  
tap.cancelsTouchesInView = false  // this line is required for xcode 9  
view.addGestureRecognizer(tap)  
于 2017-09-28T05:23:28.147 回答
0

升级到 iOS 11 时我遇到了同样的问题。

包含按钮的 UIView 的大小为 0x0。

我在 Interface Builder 上修复了 UIView 的高度 x 宽度,然后它就可以工作了。

于 2017-10-23T23:01:29.880 回答