iOS UINavigationController barHideOnTapGestureRecognizer 和 UIButton 干扰
iOS UINavigationController barHideOnTapGestureRecognizer and UIButton interference
我开发了一个应用程序,它利用 iOS8 功能在点击视图时显示或隐藏导航栏。
但是,主视图包含一个 UIButton,它也会对点击起作用。问题是 'objects' 都收到点击,如果我点击按钮,导航栏会切换其可见性。
我可以通过导航控制器访问 barHideOnTapGestureRecognizer,但不太确定可以用它做什么来阻止它在点击按钮时响应。
有没有办法(除了关闭或更改为 'Swipe to Hide')在按下按钮时抑制导航栏的 appearance/disappearance?
[self.navigationController setNavigationBarHidden:YES];
不要使用标准 barHideOnTapGestureRecognizer
。幸运的是,自己动手并不难:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let gestureRecognizer = UITapGestureRecognizer(target: self, action: "toggleBarsOnTap:")
self.view.addGestureRecognizer(gestureRecognizer)
}
func toggleBarsOnTap(sender: AnyObject?) {
let hidden = !self.navigationBarHidden
self.setNavigationBarHidden(hidden, animated: true)
self.setToolbarHidden(hidden, animated: true)
}
点击视图会 show/hide 栏,点击控件(视图的子视图)不会。
我开发了一个应用程序,它利用 iOS8 功能在点击视图时显示或隐藏导航栏。
但是,主视图包含一个 UIButton,它也会对点击起作用。问题是 'objects' 都收到点击,如果我点击按钮,导航栏会切换其可见性。
我可以通过导航控制器访问 barHideOnTapGestureRecognizer,但不太确定可以用它做什么来阻止它在点击按钮时响应。
有没有办法(除了关闭或更改为 'Swipe to Hide')在按下按钮时抑制导航栏的 appearance/disappearance?
[self.navigationController setNavigationBarHidden:YES];
不要使用标准 barHideOnTapGestureRecognizer
。幸运的是,自己动手并不难:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let gestureRecognizer = UITapGestureRecognizer(target: self, action: "toggleBarsOnTap:")
self.view.addGestureRecognizer(gestureRecognizer)
}
func toggleBarsOnTap(sender: AnyObject?) {
let hidden = !self.navigationBarHidden
self.setNavigationBarHidden(hidden, animated: true)
self.setToolbarHidden(hidden, animated: true)
}
点击视图会 show/hide 栏,点击控件(视图的子视图)不会。