【发布时间】:2014-12-02 10:49:20
【问题描述】:
我已经创建了一个 UITableView,它可以在正常情况下对其表格单元格执行滑动删除,但是当我将 UITableView 放入可以水平滚动的 UIScrollView 时,外部滚动视图将吞噬滑动事件,因此滑动删除不可行。
【问题讨论】:
标签: ios uitableview uiscrollview
我已经创建了一个 UITableView,它可以在正常情况下对其表格单元格执行滑动删除,但是当我将 UITableView 放入可以水平滚动的 UIScrollView 时,外部滚动视图将吞噬滑动事件,因此滑动删除不可行。
【问题讨论】:
标签: ios uitableview uiscrollview
很遗憾地告诉您,您必须为您的功能放弃一个,因为这两个功能依赖于相同的手势。
如果要保留滑动删除,请设置外部scrollview.scrollEnabled = NO。我认为这会有所帮助。
如果没有,有一个按钮来启动 tableview 编辑模式。这将使您删除带有滚动视图的单元格可以滑动。
【讨论】:
我终于找到了解决办法!
子类化外部 UIScrollView,并覆盖一个方法
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
@interface AllowSwipeScrollView : UIScrollView
@end
@implementation AllowSwipeScrollView
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
BOOL inTableViewCell = .... // check the current touch is in table view cell
if (inTableViewCell) {
return NO;
}else{
return [super gestureRecognizerShouldBegin:gestureRecognizer];
}
}
@end
并确保 UITableView 实例位于 AllowSwipeScrollView 中。
【讨论】:
试试这个条件
如果 (ScrollView == self.tableView) 返回;
在scrollviewdidscroll 方法中。
【讨论】: