2017-08-24 49 views
8

关于被如此这个另外一个问题,但是这有什么关系呢,因为我觉得这跟iOS的11UIBarButtonItem无法在iOS 11 beta 7上点击?

我有这2和UIButton S中的一个UIView内部分组的测试版做。这个UIView被放在一个UIBarButtonItem里面,整个事情被设置为Left Bar Button Items,使用Interface Builder。

每个按钮在被点击时显示一个由故事板触发的弹出窗口。

我在使用Xcode 8运行iOS 9的iPad 3上测试此功能。这非常有效。

现在我决定在我的iPad Pro 9.7上运行iOS 11 beta 7进行测试。我正在使用Xcode 9 beta 6.当我在iPad Pro上运行此功能时,导航栏上的所有按钮都已停止他们不响应点击。现在,我尝试同样的Xcode 9测试版6和iPad 3的与iOS 9运行应用程序,并再次,所有美妙的工作。

我编译为iOS 9.1。

按钮甚至不会突出显示以确认轻按,就像他们在iOS 9上一样。

iOS 11 beta 7和酒吧按钮项目是否存在问题?

任何想法?

+0

我有一个类似的问题,并发现,如果我刷一下按钮,它发出的动作,很奇怪的行为。 –

+0

看到我的答案。我发现问题 – SpaceDog

回答

4

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

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

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

这被编译为iOS 9和设备上可在iOS 10以下,但没有iOS的11

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

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

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

这将对我从9测试的所有iOS版本一起使用直通11

10

我发现,同样的代码在Xcode建造8个作品以及上ios10-11,但是当我建立和Xcode 9的UIBarButtonItem定制查看不响应点击。

看起来问题出现,因为从ios 11导航栏使用autolayout而不是处理帧。屏幕上的按钮看起来不错,但在技术上看起来他们在屏幕外。

所以我的修补程序是添加自动布局约束到我的自定义视图。

//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 

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

+2

非常好!谢谢!这是Apple永远不会修复的错误之一。这是我未来留给人们的一个信息,那就是处理这个错误。 – SpaceDog

+0

@SpaceDog我续订了这个消息,解决方案仍然有效,错误仍然存​​在 – JuicyFruit

2

让水龙头:

UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(manualAdd.dismissKeyboard)) 
tap.cancelsTouchesInView = false // this line is required for xcode 9 
view.addGestureRecognizer(tap) 
+1

没有解决我的问题。 – Harsh

+0

它也不能修复我的。 –

0

我升级到iOS的11

时有同样的问题包含按钮的UIView的大小是为0x0。

我修复了界面生成器上的UIView的高度x宽度,它在那之后起作用。

2

我加入这个方法给的UIBarButtonItem得到这个工作:

[self.barBTNItem setWidth:44]; 
+0

它是有道理的。谢谢。 – SpaceDog