我有一个tableView,每行有两个按钮,用户当然可以滚动查看更多行,也可以点击按钮查看项目详细信息。
问题:
当用户向上或向下滑动手指时,桌子滚动得很好,但是当用户用手指按住按钮超过一秒钟然后向上或向下移动手指时,桌子就不会滚动。我不希望这种行为,我希望tableview将获得第一优先级,因此它将滚动并且按钮事件不会触发。
如何防止这种情况发生?设置按钮目标的代码是:
[cell.buttonLeft addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
答案 0 :(得分: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");
}
}
答案 1 :(得分:-1)
如果您正在使用IB,则可以向单元格添加按钮(在IB中),修改其标记,然后将目标和操作添加到带有该标记的按钮。
UIButton *button = (UIButton *)[cell.contentView viewWithTag:1002];
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];