导航栏中的 UIButton 无法识别 iOS 11 中的点击
UIButton in Navigation Bar Not Recognizing Taps in iOS 11
我在位于 UIImage
和 UILabel
顶部的导航栏中有一个 UIButton
。它在 iOS 10 中运行良好,但现在在 iOS 11 中它无法识别来自我的 @IBAction
插座的任何水龙头。
我尝试将水龙头出口移至条形按钮项目,但这也不起作用。 UIButton
具有以下约束:
我通过给它一个绿色背景来确认它在那里,所以我知道它是可见的和可用的。
知道发生了什么事吗?
这很疯狂但是:
在我的情况下,我有自定义 NavBar 和 NavBarItems(在我的例子中是右按钮)和 重要:以编程方式添加的 UITapGestureRecognizer(用于在文本字段周围点击时关闭键盘):
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tap)
在 iOS 10.3 - 一切正常...在 11 - 我只有我的 "tap" 操作...所以当我关闭 TapGestureRecognizer - NavBar 上的操作开始工作...
所以,如果您的屏幕上有一些手势 - 只需尝试将其删除...
希望对您有所帮助
我从其他开发人员那里找到了解决方案。
您必须向视图添加宽度和高度限制,以将您的所有内容包裹在栏按钮项中。所以在我的例子中,标记为 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
之后一切如常。
添加到 Clifton Labrum,这是必经之路。 Apple 更改了导航栏在 iOS 11 中的工作方式。
这也可以在情节提要中完成,但要通过后代约束。
不能直接给 UIBarButtonItem 中的自定义视图约束。相反,为其子视图提供约束,自定义视图将隐式获得其约束:
由于这些限制,自定义视图将隐式获取其大小。
这应该可以解决由 iOS 11.
引起的所有奇怪行为
我在位于 UIImage
和 UILabel
顶部的导航栏中有一个 UIButton
。它在 iOS 10 中运行良好,但现在在 iOS 11 中它无法识别来自我的 @IBAction
插座的任何水龙头。
我尝试将水龙头出口移至条形按钮项目,但这也不起作用。 UIButton
具有以下约束:
我通过给它一个绿色背景来确认它在那里,所以我知道它是可见的和可用的。
知道发生了什么事吗?
这很疯狂但是: 在我的情况下,我有自定义 NavBar 和 NavBarItems(在我的例子中是右按钮)和 重要:以编程方式添加的 UITapGestureRecognizer(用于在文本字段周围点击时关闭键盘):
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tap)
在 iOS 10.3 - 一切正常...在 11 - 我只有我的 "tap" 操作...所以当我关闭 TapGestureRecognizer - NavBar 上的操作开始工作...
所以,如果您的屏幕上有一些手势 - 只需尝试将其删除...
希望对您有所帮助
我从其他开发人员那里找到了解决方案。
您必须向视图添加宽度和高度限制,以将您的所有内容包裹在栏按钮项中。所以在我的例子中,标记为 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
之后一切如常。
添加到 Clifton Labrum,这是必经之路。 Apple 更改了导航栏在 iOS 11 中的工作方式。 这也可以在情节提要中完成,但要通过后代约束。
不能直接给 UIBarButtonItem 中的自定义视图约束。相反,为其子视图提供约束,自定义视图将隐式获得其约束:
由于这些限制,自定义视图将隐式获取其大小。
这应该可以解决由 iOS 11.
引起的所有奇怪行为