3

各行に 2 つのボタンがある tableView を取得しました。もちろん、ユーザーはスクロールしてさらに行を表示したり、ボタンをタップしてアイテムの詳細を表示したりできます。

問題:

ユーザーが指を上下にスワイプすると、テーブルはうまくスクロールしますが、ユーザーがボタンを 1 秒以上指で押したままにしてから指を上下に動かすと、テーブルはスクロールしません。私はこの動作を望んでいません。テーブルビューが最優先されるようにしたいので、スクロールしてボタンイベントが発生しません。

どうすればこれを防ぐことができますか? ボタンのターゲットを設定するコードは次のとおりです。

[cell.buttonLeft addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; 
4

2 に答える 2

4

使うUITapGestureRecognizer代わりに使うaddTarget:

例:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(aMethod:)];
[button addGestureRecognizer:tapGestureRecognizer];
[button setTitle:@"Show View" forState:UIControlStateNormal];

button.frame = CGRectMake(0, 0, 160.0, 40.0);
[cell.contentView addSubview:button];


-(void)aMethod:(UITapGestureRecognizer * )sender{

    if(sender.state == UIGestureRecognizerStateEnded)
    {
         NSLog(@"triggered");
    }
}
于 2013-03-27T18:04:53.640 に答える
-1

IB を使用している場合は、(IB 内の) セルにボタンを追加し、そのタグを変更してから、そのタグを使用してボタンにターゲットとアクションを追加できます。

UIButton *button = (UIButton *)[cell.contentView viewWithTag:1002];
    [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
于 2013-03-27T22:03:14.977 に答える