检测UIControlEventTouchUpInside并删除UITableViewCell手势

时间:2014-04-04 18:52:09

标签: ios uitableview

检测到UITutViewCell内的UIButton的UIControlEventTouchUpInside时出现问题。该应用程序实现UITableView类的编辑委托方法,以允许用户删除单元格。

当我点击按钮时,它会触发选择器并完成它必须做的事情(正确的行为)。问题是我在按钮的同一位置开始删除单元格的手势。编辑委托方法和分配给按钮的选择器都被触发。因此,行为不是预期的,因为移动了单元格,并且还执行了按钮逻辑。有没有办法检测用户是否已完成删除手势,而不是轻击手势?

这是我的实施,希望这会有所帮助。

编辑委托方法的实施:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        ...
    }
}

这里是UIButton实现:

UIButton *videoButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
    videoButton.backgroundColor = [UIColor clearColor];
[videoButton addTarget:self action:@selector(videoButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:videoButton];

和选择器方法实现:

- (void)videoButtonTapped:(id)sender
{
   (some domain logic...)
}

2 个答案:

答案 0 :(得分:1)

每次开始编辑单元格(滑动)时,单元格会将其编辑状态更改为YES,这样您就可以在 videoButtonTapped:方法中检查单元格的编辑模式,这样如果单元格是在编辑模式下,什么也不做。

答案 1 :(得分:0)

尝试将UIControlEventTouchDragInside事件添加到videoButton,以便您可以检查用户是拖动还是仅点按。