无法覆盖滑动以删除 iOS v > 6.1 的单元格功能

Posted

技术标签:

【中文标题】无法覆盖滑动以删除 iOS v > 6.1 的单元格功能【英文标题】:Unable to override swipe to delete cell functionality for iOS v > 6.1 【发布时间】:2013-11-22 12:49:48 【问题描述】:

我们正在开发一个 iPad 应用程序,其中整个 UI 都是使用 Storyboard 文件创建的。

在一个视图控制器场景中,有一个 UITableView 包含一个自定义单元格。

当我滑动到表格单元格时,会出现一个删除按钮。

如何禁用此滑动删除功能。我们在顶部导航栏上有我们自己的编辑按钮,它设置 UITableView 的编辑模式。我们需要禁用滑动删除功能。

这是我们已经尝试过的:

1.覆盖滑动手势方法:

 UISwipeGestureRecognizer *gestureR = [[UISwipeGestureRecognizer alloc]
                                             initWithTarget:self action:@selector(handleSwipeFrom:)];
 [gestureR setDirection:UISwipeGestureRecognizerDirectionRight];//|UISwipeGestureRecognizerDirectionRight)];
 [myTableView addGestureRecognizer:gestureR];

我们已经在 myTableView 以及 CustomCell 文件中尝试了这个手势。

2。移除滑动手势方法:

  UIGestureRecognizer* swipe = [[self.tableView gestureRecognizers] objectAtIndex:2];
    [myTableView removeGestureRecognizer:swipe];

这两个代码块都不适合我们。

此问题仅适用于 ios 7,因为 UITableView 有默认滑动删除。

请为此提出解决方案。

【问题讨论】:

【参考方案1】:

(1.) 并不是真正的覆盖。似乎添加多个识别器可能会产生未定义的结果。 (2.) 看起来像一个私有 API hack,所以也不可取。

相反,表格视图的编辑行为是通过覆盖这些方法来控制的:

- tableView:willBeginEditingRowAtIndexPath:
– tableView:editingStyleForRowAtIndexPath:

详情请参阅documentation。

【讨论】:

以上是关于无法覆盖滑动以删除 iOS v > 6.1 的单元格功能的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 覆盖向左滑动的删除按钮

如何在向下滑动 UIWebView 以修复 iOS7 状态栏覆盖问题后更改 UIWebView 背景颜色?

向左滑动删除单元格在 ios 8 中无法正常工作,但在 ios 7 中有效

UITableView 滑动删除在 iOS8 上无法正常工作

通过滑动 UIView 滑出导航以覆盖另一个 UIView

iOS 从 UITableView 滑动以删除 plist 中的数组