私の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
アクションUITapGestureRecognizer
はまだ呼び出されています。
戻るボタンを再び機能させるアイデアはあります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;
}