ios - 在动画 UIView 上点击手势不起作用

标签 ios iphone swift uiview uitapgesturerecognizer

我在正在动画翻译的 UILabel 上有一个点击手势。每当您在动画期间点击标签时,点击手势都没有响应。

这是我的代码:

    label.addGestureRecognizer(tapGesture)

    label.userInteractionEnabled = true
    label.transform = CGAffineTransformMakeTranslation(0, 0)

    UIView.animateWithDuration(12, delay: 0, options: UIViewAnimationOptions.AllowUserInteraction, animations: { () -> Void in
        label.transform = CGAffineTransformMakeTranslation(0, 900)
        }, completion: nil)

手势代码:

func setUpRecognizers() {
    tapGesture = UITapGestureRecognizer(target: self, action: "onTap:")
}
func onTap(sender : AnyObject) {
    print("Tapped")
}

有什么想法吗?谢谢:)


为 2021 年添加的注释:

现在这非常简单,您只需重写 hitTest。

最佳答案

如何在移动的 View 中检测触摸

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {

    let pf = layer.presentation()!.frame
    // note, that is in the space of our superview

    let p = self.convert(point, to: superview!)

    if pf.contains(p) { return self }
    return nil
}

就这么简单

相关提示——

不要忘记,在大多数情况下,如果动画正在运行,您肯定会想要取消它。因此,假设有一个“移动目标”,并且您希望能够用手指捕获它并将其滑动到其他地方,自然地在这种用例中,您的 View Controller 中的代码看起来像..

   func sliderTouched() {
       if alreadyMoving {
          yourPropertyAnimator?.stopAnimation(true)
          yourPropertyAnimator = nil
       }
       etc ...
   }

关于ios - 在动画 UIView 上点击手势不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35998808/

相关文章:

objective-c - iOS内核概述!

ios - CGContextDrawPDFPage 内存泄漏 - 应用程序崩溃

ios - 检查 FaceID 是否正确?

ios - 如何在 swift 中使用 api 通用管理器类删除传递数组作为参数的 json 解析错误?

ios - 升级到 Xcode 10 后无法快速识别 Objective C 类

ios - 将 CGRect 从 View 转换为 super View 不起作用

用于 RSS 提要解析的 Objective-C 库?

ios - 需要重写一些代码

iphone - NSNotificationCenter 一个帖子导致观察者被调用两次

ios - 如何为 API 凭据设置/取消设置多个帐户