【问题标题】:How to recognise gesture in superview?如何识别superview中的手势?
【发布时间】:2011-04-30 03:13:23
【问题描述】:

我有一个视图(父)和一个子视图(子)。 child是一个UIControl,响应UIControlEventTouchDownInside,parent有一个swipe识别器。即使从孩子开始,我也想捕捉滑动。

问题:如何识别点击前的滑动?有没有办法告诉 iphone,父母的手势先于孩子的手势?

感谢您的帮助!

编辑 我只是将孩子更改为 UIControl(而不是使用水龙头识别器)。我不确定这对这个问题的答案很重要,但我想我还是会提到它。

编辑 2

针对这两个答案,我再次将点击识别器添加到孩子,并尝试延迟(并失败)点击识别,以便我可以在包含孩子的大视图(父)上滑动。到目前为止没有运气。

编辑 3

我真的很想让孩子成为 UIControl 并使用 UITouchDownInside 而不是点击识别器,因为我想使用 down 事件而不是 up 事件。

编辑 4

现在检测到滑动,但在子项中,未检测到以下内容: UIControlEventTouchDragOutside,UIControlEventTouchDragExit,UIControlEventTouchCancel 我至少需要其中一个来检测用户何时实际上并不打算点击孩子:/

【问题讨论】:

  • 你的意思是孩子正在响应 UIControlEventTouchUpInside 对吧?
  • @Shreesh:不行,UIControlEventTouchDownInside,否则没有问题。

标签: iphone objective-c


【解决方案1】:

检查 UIGestureRecognizer 中的- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer。要点击,滑动手势必须失败。

【讨论】:

  • 感谢您的帮助!我试过了(我希望它反过来:滑动,点击必须失败)但它似乎不起作用。你做过吗?或者你认为它有效吗?
  • 等一下,我会在某处上传一个简单的示例。不挂断! :D
  • 但无论如何我都不能使用两个手势识别器,我需要孩子成为 UIControl 因为我需要回答触摸事件,而不是像点击手势识别器那样触摸向上。我一直在进行一些试验,似乎有时会识别出滑动(十分之一)。我想知道我做错了什么。
  • 我在 db.tt/169y2YC 做了一个简短的例子,使用了一个 UILongPressGestureRecognizer,它的 minimumPressDuration 值较低。我希望它不是用于实时游戏:)
【解决方案2】:

您可以使用 [swipeGesture delaysTouchesBegan] 消息来延迟传递给子控件的触摸事件。

【讨论】:

  • 感谢您帮助我。我试过 [tapRecogniser setDelaysTouchesBegan:YES];但仍然无法识别滑动。
猜你喜欢
  • 1970-01-01
  • 2011-09-09
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多