我开发了一个应用程序,利用iOS8的功能,在单击视图时显示或隐藏导航栏。
然而,主视图包含一个UIButton,它也会响应点击。问题是两个“对象”都接收到了点击事件,如果我点击按钮,导航栏会切换其可见性。
我可以通过导航控制器访问 barHideOnTapGestureRecognizer,但不太确定如何使用它来阻止它响应按钮的点击事件。
除了关闭或更改为“滑动隐藏”外,是否有一种方法可以在按下按钮时抑制导航栏的出现/消失?
然而,主视图包含一个UIButton,它也会响应点击。问题是两个“对象”都接收到了点击事件,如果我点击按钮,导航栏会切换其可见性。
我可以通过导航控制器访问 barHideOnTapGestureRecognizer,但不太确定如何使用它来阻止它响应按钮的点击事件。
除了关闭或更改为“滑动隐藏”外,是否有一种方法可以在按下按钮时抑制导航栏的出现/消失?
不要使用标准的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)
}
[self.navigationController setNavigationBarHidden:YES];