为什么UITableView的滑动删除有时工作正常,有时不行?

pya*_*eld 4 iphone uitableview swipe ios

有一个UITableView关于我的看法,我想申请一个特定部分的触击删除模式的行.我实施的内容如下:

 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@">> canEditRowAtIndexPath");
    if (indexPath.section == CanDeletedSection) {
        return YES;
    }else{
        return NO;
    }
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@">> editingStyleForRowAtIndexPath");
    if (indexPath.section == CanDeletedSection) {
        return UITableViewCellEditingStyleDelete;
    }
    return UITableViewCellEditingStyleNone;
}
 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
     NSLog(@">> commitEditingStyle");
     if (editingStyle == UITableViewCellEditingStyleDelete) {
         // dosomething
     }
}
Run Code Online (Sandbox Code Playgroud)

但是当我滑动表格行时,有时Delete按钮会出现,有时则不会.顺便说一句,我的单元格是自定义的并且继承自UITableViewCell.

我已经添加了NSLog上述方法.当Delete按钮没有出现时,我得到的日志如下:

>> editingStyleForRowAtIndexPath
>> canEditRowAtIndexPath
Run Code Online (Sandbox Code Playgroud)

出现Delete按钮时,日志如下:

>> editingStyleForRowAtIndexPath
>> canEditRowAtIndexPath
>> editingStyleForRowAtIndexPath
>> canEditRowAtIndexPath
>> canEditRowAtIndexPath
>> editingStyleForRowAtIndexPath
Run Code Online (Sandbox Code Playgroud)

我做了一个使用自定义单元格的演示,它工作正常.所以问题是由包含表视图的视图控制器引起的.视图控制器继承自另一个视图控制器,在该视图控制器中,有一个用于隐藏键盘的轻击手势.但是当我从视图控制器中删除它们时,结果是一样的.

小智 8

请检查视图或超级视图是否有任何其他手势.如果是这样,请确保UIGestureRecognizerDelegate在设置手势委托之后实现以下方法:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
 return YES;
}
Run Code Online (Sandbox Code Playgroud)


Mun*_*ndi 0

有时,尤其是在模拟器中,很难正确执行滑动。您会发现这很可能是物理问题,而不是编码问题。

此外,您可能需要检查自定义单元格是否不包含捕获滑动且不将其传递到单元格的元素。