首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UITableView上的冲突手势识别器

UITableView上的冲突手势识别器
EN

Stack Overflow用户
提问于 2013-01-15 12:27:38
回答 2查看 11.7K关注 0票数 4

我的UIView上有两个自定义控件,一个是现在流行的滑动菜单(当你在NavBar上滑动手指,视图向右滑动时),另一个在UITableViewCell上--它是来自名为NavBar的控件的自定义TableViewCell (就像Twitter应用程序中的一样),当你在左边滑动单元格时,它会显示一些按钮等等。

它们工作得很好,但是当我试图向整个UITableView添加一个手势识别器时,使整个视图成为UIGestureRecognizer的一个区域(因此,当我移动它时,我可以将视图移到右边),手势识别器在某种程度上存在冲突。

这里的原因是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-15 12:44:58

我不清楚你认为两个滑动手势识别器在这种情况下是如何协同工作的,但我认为您可以尝试查看一下

代码语言:javascript
运行
复制
– gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

delegate method

请记住,您有两个手势,所以有两个委托(从概念上讲,它们是用相同的方法实现的),这样您就可以使一个手势(第一个参数)总是返回否,另一个是肯定的,看看是否可以使两个手势识别器以令人满意的方式协同工作。

代码语言:javascript
运行
复制
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {

    if ([gestureRecognizer.view isKindOfClass:[UITableView class]]) {
       ...
    } else {
       ...
    }
}

这只是一个在您的情况下应该工作的示例(尽管检查语法),但是您也可以将2个识别器存储在类的属性中,这样您就知道哪一个是哪一个了。

票数 6
EN

Stack Overflow用户

发布于 2015-08-15 07:12:54

当我在UIGestureRecognizer上使用UITableView时,遇到了类似于u.Finally这样的问题,我通过这个one在UIGestureRecognizer中找到了"cancelsTouchesInView“属性,它很有用。

代码语言:javascript
运行
复制
  UIGestureRecognizer* tapGesture = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
  **tapGesture.cancelsTouchesInView = NO;**//pass touch event to others

谨致问候!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14337753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档