iOS UINavigationController barHideOnTapGestureRecognizer 和 UIButton 干扰
Posted
技术标签:
【中文标题】iOS UINavigationController barHideOnTapGestureRecognizer 和 UIButton 干扰【英文标题】:iOS UINavigationController barHideOnTapGestureRecognizer and UIButton interference 【发布时间】:2015-03-19 17:43:45 【问题描述】:我开发了一个应用程序,它利用 ios8 功能在点击视图时显示或隐藏导航栏。
但是,主视图包含一个 UIButton,它也会在点击时起作用。问题是两个“对象”都在接收点击,如果我点击按钮,导航栏会切换其可见性。
我可以通过导航控制器访问 barHideOnTapGestureRecognizer,但我不确定如果点击按钮,可以用它做什么来阻止它响应。
有没有办法(除了关闭或更改为“滑动隐藏”之外)在按下按钮时抑制导航栏的出现/消失?
【问题讨论】:
你尝试用 [self.navigationController setNavigationBarHidden:YES] 解决了吗? ? 嗯...谢谢...这确实有帮助。我必须将它添加到我认为的每个动作处理程序中,这有点乏味。我想知道是否有一种“全局”的方式来告诉它不要对按钮点击做出反应。 不幸的是,我不知道。我总是在需要时输入它,但如果我想出来我会在这里写。顺便说一句,我添加了我的答案:) 【参考方案1】:不要使用标准的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)
点击视图会显示/隐藏栏,点击控件(视图的子视图)不会。
【讨论】:
【参考方案2】:[self.navigationController setNavigationBarHidden:YES];
【讨论】:
谢谢。它有帮助以上是关于iOS UINavigationController barHideOnTapGestureRecognizer 和 UIButton 干扰的主要内容,如果未能解决你的问题,请参考以下文章
使用 UINavigationController 从另一个控制器更新或重新加载 UIViewController?
将 managedObjectContext 发送到 viewController 崩溃
如何正确关闭作为模式呈现的 UINavigationController?