美文网首页
ios给动画中的view添加点击事件

ios给动画中的view添加点击事件

作者: FinLaas | 来源:发表于2019-08-01 15:00 被阅读0次

动画中的view,其frame不在肉眼所见的位置,所以需要其他方式接收点击事件。



步骤1:将点击事件指向view

使用layer的presentation方法,得到view在动画中的当前frame。
重写hittest方法,检查当前frame是否包含点击位置。

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        let localPoint = convert(point, to: self.superview)
        if self.layer.presentation()?.frame.contains(localPoint) == true {
            print("tap")
            return tapBtn
        } else {
            return super.hitTest(point, with: event)
        }
    }



步骤2:让view接收事件

由于实际frame不在当前位置,当判断点击是否在view范围内时,需要返回true。

override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        return true
    }

这个方法仅用于touchUpInside事件,其他事件当实现欢迎大家提建议。

相关文章

网友评论

      本文标题:ios给动画中的view添加点击事件

      本文链接:https://www.haomeiwen.com/subject/jbnqdctx.html