5

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
     }
}

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

我已将上述方法添加NSLog到上述方法中。当Delete按钮不出现时,我得到这样的日志:

>> editingStyleForRowAtIndexPath
>> canEditRowAtIndexPath

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

>> editingStyleForRowAtIndexPath
>> canEditRowAtIndexPath
>> editingStyleForRowAtIndexPath
>> canEditRowAtIndexPath
>> canEditRowAtIndexPath
>> editingStyleForRowAtIndexPath

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

4

4 回答 4

8

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

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
 return YES;
}
于 2013-11-23T01:19:04.100 回答
0

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

此外,您可能想检查您的自定义单元格是否不包含捕捉滑动并且不将其传递给单元格的元素。

于 2012-12-18T20:52:02.170 回答
0

视图层次结构中其他位置的手势识别器可以拦截和阻止滑动动作。

我在视图控制器中用这个类别解决了它:

@interface UIView (CellSwipeAdditions)
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
@end

@implementation UIView (CellSwipeAdditions)
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
        return YES;
    }
@end

感谢 bademi 引导我找到这个解决方案!

于 2016-10-07T19:53:06.623 回答
0

我也遇到过同样的问题......但最后我得到了解决方案:-

示例:-
self.navigationController.interactivePopGestureRecognizer.enabled = NO;

如果您使用“commitcommiteditingstyle”,则必须禁用该特定视图中的任何其他手势。

希望这会对您有所帮助... :)

于 2016-05-15T07:13:43.263 回答