ios使导航栏可点击

时间:2013-08-20 00:08:53

标签: ios objective-c navigationbar touches

试图让我的navigationController的navigationBar可点击。 它适用于

UITapGestureRecognizer* tapRecon = [[UITapGestureRecognizer alloc]
                                    initWithTarget:self action:@selector(toggleMenu)];
tapRecon.delegate = self;
tapRecon.numberOfTapsRequired = 1;
[self.navigationBar addGestureRecognizer:tapRecon];

但是当我有一个后退按钮时,无法点击它(手势可能会占据按钮)。

所以,我尝试了一些在这里找到的东西:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return (![[[touch view] class] isSubclassOfClass:[UIButton class]]);
}

没什么,因为[touch view]总是UINavigationBar ......

我尝试做的最后一件事是将cancelsTouchesInView设置为NO。没关系,我们可以点击后退按钮,但仍会调用toggleMenu的{​​{1}}操作。

您是否有理由让后退按钮再次工作,但不能同时调用UITapGestureRecognizer

谢谢!

编辑:

Juste找到了怎么做:

toggleMenu

2 个答案:

答案 0 :(得分:0)

你可以制作一个环绕导航栏的按钮,并按下另一个按钮进行按下。务必将其安排在IB

中的导航栏按钮顶部

答案 1 :(得分:-2)

这是Swift代码的解决方案:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
    for view in self.navigationBar.subviews {
        if let button = view as? UIButton {
            if touch.view.isEqual(button) {
                return false
            }
        }
    }
    return true
}

只需将此代码放入UIGestureRecognizer

的代理中即可