使用滑动隐藏的UINavigationBar会留下一个拦截水龙头的区域来显示它?

时间:2016-03-04 21:21:17

标签: ios uinavigationbar

我已将UINavigationController配置为在滑动时自动隐藏它的UINavigationBar。向上和向下滑动隐藏/显示酒吧就好了。然而,先前由导航栏占据的屏幕区域中的轻击(触摸)也触发导航栏显示,这导致我的问题。我的视图在屏幕顶部附近放置了一个按钮。当整个应用程序通过自动隐藏UINavigationBar扩展到剩下的空间时,点击我的按钮会触发导航栏显示,这非常烦人,因为我想要滑动以显示条形图而不是点击。我认为这种情况正在发生,因为按钮已经移动到导航栏所在的空间。

当点击我的按钮时,有没有办法阻止条形显示发生?我想知道我是否应该在UINavigationController中覆盖hitTest以试图阻止事件传播?

以下是我隐藏导航栏的方法:

let navVC = self.navigationController
navVC!.hidesBarsOnSwipe = true
navVC!.hidesBarsOnTap = false

如果我使用RxSwift订阅UINavigationController的控件事件,我会看到如下事件:

received <_UIBarTapGestureRecognizer: 0x7b6dae30; state = Ended;
    cancelsTouchesInView = NO; view = <UILayoutContainerView 0x7b942bc0>; 
    targets= <("(action=_gestureRecognizedToggleVisibility:, 
        target=<UINavigationController 0x7da79400>)", "(action=eventHandler:, 
        target=<RxCocoa.GestureTarget 0x7b6e1f90>)")>>
    tapCategory=WhereNavigationBarWas

1 个答案:

答案 0 :(得分:0)

看起来除了不让第一响应者向上移动之外,UINavBar空间没有什么可做的。我最终将我的按钮移动到受影响视图上的另一个位置,并将我的问题排除在外。我的搭档和我更喜欢新的布局,这是一个奖励。谢谢大家!