检测到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...)
}
答案 0 :(得分:1)
每次开始编辑单元格(滑动)时,单元格会将其编辑状态更改为YES,这样您就可以在 videoButtonTapped:方法中检查单元格的编辑模式,这样如果单元格是在编辑模式下,什么也不做。
答案 1 :(得分:0)
尝试将UIControlEventTouchDragInside
事件添加到videoButton,以便您可以检查用户是拖动还是仅点按。