导航栏中的UIButton无法识别iOS中的水龙头11

问题描述:

我在导航栏中有一个UIButton,该导航栏位于UIImageUILabel的顶部。它在iOS 10中运行良好,但是现在在iOS 11中,它无法识别我的@IBAction插座上的任何分支。导航栏中的UIButton无法识别iOS中的水龙头11

navbar button

我试图移动排渣口至栏按钮的项目,但也不能工作。该UIButton有以下限制:

enter image description here

我证实,它通过给它一个绿色背景的存在,所以我知道这是明显的和可用的。

任何想法是怎么回事?

+0

用的UIBarButtonItem同样的问题:(试图找到解决办法... –

我找到了另一位开发人员的解决方案。

您必须在视图中添加宽度和高度约束,以将所有东西包装在酒吧按钮项中。所以在我的情况下,标记为View的项目需要约束条件。

这里是做什么:

步骤1

创建从View@IBOutlet具有此导航栏视图控制器。

@IBOutlet weak var myView: UIView! 

步骤2

在含视图控制器,内部viewDidLoad()添加的约束:

myView.widthAnchor.constraint(equalToConstant: 63).isActive = true 
myView.heightAnchor.constraint(equalToConstant: 33).isActive = true 

之后,一切正常像以前的。

+0

是它为我工作。设置约束被添加到栏按钮项的所有意见是这样的技巧 – user36476

+0

这也适用于你在navigationItem的titleView中放置按钮的类似情况,非常不直观,但是谢谢! – SomaMan

它的疯狂,但: 在我的情况,我有(在我的情况分辩按钮)与NavBarItems定制的NavBar和重要:以编程方式添加UITapGestureRecognizer(用于关闭键盘上自来水围绕一个文本框):

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) 
view.addGestureRecognizer(tap) 

在iOS 10.3 - 一切都ok ...在11 - 我只有我的“点击”动作...所以当我解雇TapGestureRecognizer - 行动NavBar开始工作...

所以,如果你有一些手势在你的屏幕上 - 只要尝试删除它...

希望它对您有所帮助

添加到Clifton Labrum,这是要走的路。 Apple改变了导航栏在iOS 11中的工作方式。 这也可以在Storyboard中完成,但是通过后代约束。

UIBarButtonItem中的自定义视图不能直接给出约束。相反,提供其子视图与约束,自定义视图将隐含得到它的约束:

UIButton has its constraints

UIButton Constraints

自定义视图会隐获得,因为这些约束的大小。

这应该可以解决所造成的iOS 11.所有怪异的行为