0

そのため、画像に UITapGestureRecognizer を持つビューがあり、テーブルビューがあります。問題は、テーブル ビュー セルをタップし、タップ ジェスチャ レコグナイザーがその背後にあるビューをタップすると、その UITapGestureRecognizer のアクションも実行されることです。質問は、テーブルビュー didSelectRowAtIndexPath が実行されたときにタップジェスチャ認識アクションが実行されないように、これを無効にするにはどうすればよいですか? ちなみに私は設定しました:

 tapGestureRecognizer.cancelsTouchesInView = NO;

私もやってみました:

- (IBAction) handleTapGesture:(UITapGestureRecognizer *) sender {

    if ([sender.view isKindOfClass:[TileViewController class]]){
        NSLog(@"CANCEL THIS");
    }

   if ([sender.view isKindOfClass:[UITableView class]]){
        NSLog(@"CANCEL THIS");
    }
}

しかし、ifステートメントには決して入りませんでした

4

3 に答える 3

2

gestureRecognizer:shouldReceiveTouch:ビューのクラスを実装および使用して、実行するアクションを決定することで、これを管理することもできます。このアプローチには、テーブルを直接囲む領域のタップをマスキングしないという利点があります (これらの領域のビューは引き続き UITableView インスタンスから派生しますが、セルを表していません)。

警告: Apple がクラス名を変更しないという前提があります。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return ![NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"];
}
于 2012-08-13T16:55:54.517 に答える
2

ビュー全体またはテーブルビューではなく、画像にタップ ジェスチャ レコグナイザーを追加していることを確認してください。

[myImage addGestureRecognizer:tapGestureRecognizer];
于 2012-01-24T23:54:16.920 に答える
0

設定

yourView.userInteractionEnabled = NO;

テーブルセルに入れているビューで。これにより、すべての子ビューへのタッチがキャンセルされます。おそらく cellForRowAtIndexPath 関数で簡単に設定できます。

于 2012-01-24T23:41:36.940 に答える