2

何らかの理由で、UITapGestureRecognizerUIButton をタップしてもメソッドが呼び出されません。本当に奇妙なのは、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];
4

2 に答える 2