UITapGestureRecognizer 不适用于 UIView 动画

Posted

技术标签:

【中文标题】UITapGestureRecognizer 不适用于 UIView 动画【英文标题】:UITapGestureRecognizer not working on UIView animated 【发布时间】:2017-03-07 17:00:26 【问题描述】:

下午好,

我尝试在 UIView 上实现 UITapGestureRecognizer。

我创建了 UITapGestureRecognizer 并像这样分配给我的 UIView。

let gestureGeneral = UITapGestureRecognizer(target: self, action:  #selector (self.toConfigurationGeneral(_:)))
self.mode_view.addGestureRecognizer(gestureGeneral)

这是我的配置通用方法:

func toConfigurationGeneral(_ sender:UITapGestureRecognizer)
    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "ConfigurationGeneralViewController") as! ConfigurationGeneralViewController
    self.navigationController?.pushViewController(nextViewController, animated: false)

这段代码运行良好,但是当我在这个 UIView 上添加动画时,我的方法没有被调用。这是我的动画:

UIView.animate(withDuration: 0.5, delay: 0, options: [.curveEaseIn, .repeat, .autoreverse, .allowUserInteraction, .allowAnimatedContent], animations: 
        self.mode_view.alpha = 0
 , completion: nil)

感谢您的回答。

【问题讨论】:

【参考方案1】:

当你视图的alpha设置为0时,所有GestureRecognizer都无法使用。

您可以添加一个具有清晰背景颜色的新子视图,与您的mode_viewmode_view 相同的框架。 并添加GestureRecognizer。 当您的mode_view 将被隐藏时,新子视图 将调用该方法。

你也可以只在这个清除背景的新子视图上添加手势

【讨论】:

【参考方案2】:

当您要使用 GestureRecognizer 时,您需要将视图的 userInteractionEnabled 设置为 true 请确认您的 mode_view.userInteractionEnabled = true

【讨论】:

以上是关于UITapGestureRecognizer 不适用于 UIView 动画的主要内容,如果未能解决你的问题,请参考以下文章

UITapGestureRecognizer 不适用于 UIImageView 自定义类

UITapGestureRecognizer 不适用于 UITextField 的自定义子类

UITapGestureRecognizer 不适用于 UIView 动画

UITapGestureRecognizer 适用于 UIImageView 但不适用于 UILabel

当我第一次快速点击按钮时,按钮点击不适用于 UITapGestureRecognizer

UITapGestureRecognizer 不适用于自定义 UIView 类