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

2019-08-01  本文已影响0人  FinLaas

动画中的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事件,其他事件当实现欢迎大家提建议。

上一篇下一篇

猜你喜欢

热点阅读