【发布时间】:2015-01-06 11:11:41
【问题描述】:
我在UITableViewCell 子类上添加了UIPanGestureRecognizer,这样当用户向左滑动时,下方的按钮就会显示出来(有点像邮件应用程序中的)。我在awakeFromNib这样做:
// Add a pan gesture recognizer to the pannable view.
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panScrollView:)];
panGesture.delegate = self;
[self.pannableView addGestureRecognizer:panGesture];
尽管我有自定义手势识别器,但我希望允许表格视图滚动,因此我在同一个 UITableViewCell 子类中也有以下内容:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
我现在的问题是我不知道如何一次只允许一个手势识别器,这样当用户侧滑时,表格视图不会滚动,反之亦然。帮忙?
我尝试过的方法不起作用
方法一
在表格视图的视图控制器中实现 UIGestureRecognizerDelegate 并要求除用于滚动表格视图的垂直手势识别器之外的任何其他手势识别器都失败。
-
将表视图的
panGestureRecognizer的委托设置为包含它的视图控制器(比如ContainingViewController)。self.tableView.panGestureRecognizer.delegate = self; -
使
ContainingViewController实现UIGestureRecognizerDelegate。 -
实现
shouldRequireFailureOfGestureRecognizer:并返回YES(我假设otherGestureRecognizer将是水平平移手势)。
错误:'UIScrollView 的内置平移手势识别器必须将其滚动视图作为其委托。'
【问题讨论】:
-
嘿,马特,你能解决这个问题吗?因为我也面临同样的问题
-
嗨,不 :( 我正在尝试其他方法,我会更新问题...
-
通过一点点修改 Magoo 的建议解决了我的问题,让我发布我的解决方案
标签: ios objective-c cocoa-touch uitableview