[英]Insert Icon in Navigation Bar / make BarButtonItem not clickable Swift iOS
[英]ios make navigation bar clickable
只是试图使我的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
。 可以,我们可以单击“后退”按钮,但仍会调用UITapGestureRecognizer
的toggleMenu
操作。
您是否有一个使后退按钮再次工作但不同时调用toggleMenu
?
谢谢 !
Juste找到了怎么做:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
for (UIView* sub in self.navigationBar.subviews) {
NSString *cl = NSStringFromClass([sub class]);
if ([cl isEqualToString:@"UINavigationItemButtonView"]) {
CGRect bback = sub.frame;
CGPoint pointInView = [touch locationInView:gestureRecognizer.view];
return !CGRectContainsPoint(bback, pointInView);
}
}
return YES;
}
好吧,您可以制作一个围绕导航栏的按钮,并制作另一个用于按回的按钮。 确保将其布置在IB中的导航栏按钮上方
这是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
的委托中即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.