【问题标题】:How to recognize tap gesture while a view is animating如何在视图动画时识别点击手势
【发布时间】:2011-11-12 08:02:39
【问题描述】:

只是想知道有没有办法让视图在动画时识别点击手势?我正在研究一个与它相连的 cashapelayer 线的视图。当用户平移视图(平移手势)时,这条线会相应地跟随,直到用户停止平移。此时将执行一个动画,将视图带回其原始位置,并将系绳层也带回来。现在我唯一真正的问题是,当视图和系绳动画时,视图不响应点击手势......

有人知道一些技巧吗?我希望我的解释是可以理解的,并在此先感谢!

(如果连线视图的概念不清楚,有一个名为 discovr apps 的免费应用程序会给出示例)。

【问题讨论】:

  • 更新:为了澄清,视图的原始边界矩形可以识别点击手势,但不能识别移动视图的点击手势,换句话说,当前帧。
  • 你需要检查这个答案:stackoverflow.com/a/4432546/129202
  • 上述链接中的解决方案可能适用于原始触摸处理,但可能不适用于手势。请参阅此手势解决方法:stackoverflow.com/questions/8340329/…
  • Here 是一个可能对您有用的答案。

标签: ios animation layer gestures


【解决方案1】:

我假设您正在使用 [UIView animateWithDuration: delay: options: animations: completion:]; 动画方法。

如果是这样,您需要将UIViewAnimationOptionAllowUserInteraction 作为选项传递,以使动画视图在动画时响应触摸。

【讨论】:

  • 感谢您的回答,但我已经这样做了。似乎手势被识别但仅在视图的原始矩形中,而不是在立即移动的视图中......我将更新我的问题,以便更清楚
【解决方案2】:

(Swift 3) 传递 .allowUserInteraction 选项

UIView.animate(withDuration: 0.75, delay: 0.0, options: [.allowUserInteraction], animations: {
      // Desired animation(s) 
}, completion: { (finished: Bool) in
        // Completion
})

【讨论】:

    【解决方案3】:

    您需要设置两个选项 - UIViewAnimationOptionAllowUserInteractionUIViewAnimationOptionAllowAnimatedContent。首先让您在动画期间与视图交互,其次强制在动画的每一帧上重绘视图,而不是使用开始帧和结束帧的快照。

    【讨论】:

    • 我尝试了你的建议,但仍然没有骰子。 :( 我可能会尝试这种方法:user-interaction-disabled 因为这让我发疯了!:)
    • 嗯。您如何尝试将手势识别器添加到动画视图的超级视图中,然后检查您是否使用 hitTest: 在动画视图内点击?
    • 在所有这些之前尝试过并再次尝试只是为了尝试但仍然无法正常工作......我只是不明白......不过感谢您的建议!
    • 选项组合:[.allowUserInteraction, .allowAnimatedContent] 对我有用,谢谢!
    猜你喜欢
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多