导航栏中有UIButton
,位于UIImage
和UILabel
的顶部。它在iOS 10中运行良好,但现在在iOS 11中它无法识别我的@IBAction
插座中的任何水龙头。
我尝试将水龙头插座移动到条形按钮项目,但这也不起作用。 UIButton
具有以下约束:
我确认它是在那里给它一个绿色背景,所以我知道它是可见的和可用的。
知道发生了什么事吗?
答案 0 :(得分:11)
我找到了另一位开发者的解决方案。
您必须将宽度和高度约束添加到视图中,该视图将所有内容包装在条形按钮项目中。所以在我的例子中,标有View
的项目需要约束。
在这里做什么:
第1步
从@IBOutlet
创建View
到具有此导航栏的视图控制器。
@IBOutlet weak var myView: UIView!
第2步
在包含视图控制器中,在viewDidLoad()
内添加约束:
myView.widthAnchor.constraint(equalToConstant: 63).isActive = true
myView.heightAnchor.constraint(equalToConstant: 33).isActive = true
之后,一切都像过去一样。
答案 1 :(得分:2)
添加到Clifton Labrum,这是要走的路。 Apple改变了导航栏在iOS 11中的工作方式。 这也可以在Storyboard中完成,但可以通过后代约束来完成。
UIBarButtonItem中的自定义视图不能直接给出约束。相反,为其子视图提供约束,自定义视图将隐式获取其约束:
由于这些限制,自定义视图将隐式获取其大小。
这应该可以解决iOS 11引起的所有奇怪行为。
答案 2 :(得分:1)
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tap)
在iOS 10.3上的- 一切都好......在11 - 我只有我的"点击"动作...所以当我解雇TapGestureRecognizer时 - NavBar上的动作开始工作......
所以,如果你的屏幕上有一些手势 - 只需尝试删除它......
希望对你有所帮助