我的UIView上有两个自定义控件,一个是现在流行的滑动菜单(当你在NavBar上滑动手指,视图向右滑动时),另一个在UITableViewCell上--它是来自名为NavBar的控件的自定义TableViewCell (就像Twitter应用程序中的一样),当你在左边滑动单元格时,它会显示一些按钮等等。
它们工作得很好,但是当我试图向整个UITableView添加一个手势识别器时,使整个视图成为UIGestureRecognizer的一个区域(因此,当我移动它时,我可以将视图移到右边),手势识别器在某种程度上存在冲突。
这里的原因是什么?
发布于 2013-01-15 12:44:58
我不清楚你认为两个滑动手势识别器在这种情况下是如何协同工作的,但我认为您可以尝试查看一下
– gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:delegate method。
请记住,您有两个手势,所以有两个委托(从概念上讲,它们是用相同的方法实现的),这样您就可以使一个手势(第一个参数)总是返回否,另一个是肯定的,看看是否可以使两个手势识别器以令人满意的方式协同工作。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
if ([gestureRecognizer.view isKindOfClass:[UITableView class]]) {
...
} else {
...
}
}这只是一个在您的情况下应该工作的示例(尽管检查语法),但是您也可以将2个识别器存储在类的属性中,这样您就知道哪一个是哪一个了。
发布于 2015-08-15 07:12:54
当我在UIGestureRecognizer上使用UITableView时,遇到了类似于u.Finally这样的问题,我通过这个one在UIGestureRecognizer中找到了"cancelsTouchesInView“属性,它很有用。
UIGestureRecognizer* tapGesture = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
**tapGesture.cancelsTouchesInView = NO;**//pass touch event to others谨致问候!
https://stackoverflow.com/questions/14337753
复制相似问题