iOS 移动view的点击事件

iOS 移动view的点击事件,第1张

1.给移动 view 添加 Layer 动画

2. view 的父类添加点击事件

3.点击事件判断处理

参考一:ios捕捉移动view的点击事件

参考二:iOS 为移动中的UIView(UIButton )添加点击事件

当前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。

在app的开发过程中我们常常需要在一些非button中添加一些点击事件,来实现我们想要的效果。比如做个下拉选项,我们希望点击背景时选项视图消失,或者我们点击某个图片(uiimageView)时跳转到大图页面或者做其他 *** 作。也许初学者会郁闷。。。这些怎么添加点击事件呢?点击事件不是只有button才能添加么?其实只要是继承 uiview的空间,你都可以手动的添加一些点击事件。

让我们看看是怎么实现的吧。

UITapGestureRecognizer*tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:selfaction:@selector(Actiondo:)]

[uiview addGestureRecognizer:tapGesture]

其实理解起来也很简单,就是新建一个UITapGestureRecognizer,这个是点击事件,再将这个事件加到uiview中,继承uiview的一般都有addGestureRecognizer这个方法。addGestureRecognizer方法就是用于添加点击事件的。

我们再定义一个Actiondo的响应方法。

-(void)Actiondo:(id)sender{}

将我们需要的动作添加在其中就可以了。

好了,UITapGestureRecognizer的使用就是这样了。赶快试一下吧!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11851405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存