【问题标题】:iOS UINavigationController barHideOnTapGestureRecognizer and UIButton interferenceiOS UINavigationController barHideOnTapGestureRecognizer 和 UIButton 干扰
【发布时间】:2015-03-19 17:43:45
【问题描述】:

我开发了一个应用程序,它利用 iOS8 功能在点击视图时显示或隐藏导航栏。

但是,主视图包含一个 UIButton,它也会在点击时起作用。问题是两个“对象”都在接收点击,如果我点击按钮,导航栏会切换其可见性。

我可以通过导航控制器访问 barHideOnTapGestureRecognizer,但我不确定如果点击按钮,可以用它做什么来阻止它响应。

有没有办法(除了关闭或更改为“滑动隐藏”之外)在按下按钮时抑制导航栏的出现/消失?

【问题讨论】:

  • 你尝试用 [self.navigationController setNavigationBarHidden:YES] 解决了吗? ?
  • 嗯...谢谢...这确实有帮助。我必须将它添加到我认为的每个动作处理程序中,这有点乏味。我想知道是否有一种“全局”的方式来告诉它不要对按钮点击做出反应。
  • 不幸的是,我不知道。我总是在需要时输入它,但如果我想出来我会在这里写。顺便说一句,我添加了我的答案:)

标签: ios iphone uinavigationcontroller uibutton uinavigationbar


【解决方案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];
    

    【讨论】:

    • 谢谢。它有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多