iOS Swift 给动画添加点击事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS Swift 给动画添加点击事件相关的知识,希望对你有一定的参考价值。

参考技术A

当前View里面有两个View,绿色的bigView和红色的smallView,smallView在bigView里面。现在让bigView执行一段移动动画,然后给bigView添加点击事件,发现点击事件无效。

因为 iOS动画中的View点击事件无效

原因是ios里几乎所有的View动画是都基于layer实现的,frame在动画开始会直接变成终点状态。动画过程中bigView的frame不会变化,也不能接收点击事件。添加点击事件可以在bigView的父view也就是当前view中重写touchesBegan() 方法,判断点击位置在哪个view里面。

添加完touchesBegan(),会发现点击bigView动画这个方法并不会触发,原因是动画中的layer会屏蔽触摸事件。这时有两种方法(效果相同):

这样点击事件就会传递给当前view

接下来判断点击位置在哪个View里。
用 touch.location(in: self) 获取触摸点在当前view中的位置;用bigView.layer.presentation()?.frame可以获取动画中的layer的frame。

以上是关于iOS Swift 给动画添加点击事件的主要内容,如果未能解决你的问题,请参考以下文章

ios 的按钮怎么添加点击事件

如何在UILable上添加点击事件

关于 iOS UIButton执行动画后点击按钮无法响应事件的问题.

怎么给uiimageview添加两次点击事件ios

iOS 怎么给tableview空白处添加点击事件而不影响cell中的一些按钮的事件

IOS开发之功能模块--给任意的UIView添加点击事件