何らかの理由で、UITapGestureRecognizer
UIButton をタップしてもメソッドが呼び出されません。本当に奇妙なのは、Xcode でブレークポイントを使用して、gestureRecognizer:shouldReceiveTouch:
メソッドが YES を返すことを確認したことです。ジェスチャはそのメソッドを呼び出す必要がありますが、そうではありません。YESにcancelsTouchesInView
設定しましたが、何もしないようです。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass: [UIButton class]] && !editingTaskName)
return NO;
else if ([touch.view isKindOfClass: [UITextField class]])
return NO;
return YES; // handle the touch
}
これは、すべてのジェスチャ認識エンジンをセットアップしたコードです。他の人が私のタップ ジェスチャを妨害している可能性があります。
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget: self action: @selector(longPress:)];
[longPress setMinimumPressDuration: 0.3];
[longPress setDelaysTouchesBegan: YES];
[self setLongPressGesture: longPress];
[[self tableView] addGestureRecognizer: longPress];
UITapGestureRecognizer *backToTableView = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(backTapRecognized:)];
[backToTableView setCancelsTouchesInView: YES];
[backToTableView setDelegate: self];
[backToTableView setEnabled: NO];
[self setBackTapGesture: backToTableView];
[[self tableView] addGestureRecognizer: backToTableView];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(hideShowEditing:)];
[tap setCancelsTouchesInView: YES];
[tap setDelegate: self];
[self setEditTap: tap];
[[self tableView] addGestureRecognizer: tap];