在UITableView上轻扫以删除以使用UIPanGestureRecognizer

car*_*lli 8 objective-c uitableview ios uipangesturerecognizer

我使用以下代码将UIPanGuestureRecognizer添加到整个视图中:

UIPanGestureRecognizer *pgr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
[[self view] addGestureRecognizer:pgr];
Run Code Online (Sandbox Code Playgroud)

在主视图中我有一个UITableView,其中包含此代码以启用滑动删除功能:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"RUNNING2");
    return UITableViewCellEditingStyleDelete;
}

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row >= _firstEditableCell && _firstEditableCell != -1)
        NSLog(@"RUNNING1");
        return YES;
    else
        return NO;
}
Run Code Online (Sandbox Code Playgroud)

RUNNING1打印到日志,并且"删除"按钮不会显示.我相信其原因是UIPanGestureRecognizer,但我不确定.如果这是正确的,我该如何解决这个问题.如果这不正确,请提供原因并解决.谢谢.

小智 16

文件:

如果手势识别器识别其手势,则取消视图的剩余触摸.

您首先会UIPanGestureRecognizer识别滑动手势,因此您UITableView不再接受触摸.

要使表格视图与手势识别器同时接收触摸,请将其添加到手势识别器的委托:

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