iOS点击事件穿透以及扩大视图的响应区域

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS点击事件穿透以及扩大视图的响应区域相关的知识,希望对你有一定的参考价值。

参考技术A 点击事件穿透指的是点击当前视图,但是实际上被选中的是其他视图。举个例子,上图效果图中有两个按钮,当点击不重合的地方,显示的是点击当前视图,当点击重合地方时,点击的是下方的视图。

如此效果,需要用到点击穿透事件:重写系统- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event方法。

此时再点击重合的区域,响应的是A按钮的事件。

扩大视图的响应区域指的是点击当前视图区域外的位置,仍然显示的是点击当前视图。举个例子,下方效果图中黄色部分是按钮,红色部分是按钮外的区域,但是点击红色部分,仍能显示点击黄色按钮。

扩大视图响应区域的本质是判断所点击的点是否在于你想要扩大的区域上。在这里,我所设置的扩大区域是边线外增加30。实现如下:

iOS点击事件穿透及扩大视图点击区域

参考技术A 点击事件穿透指的是点击当前视图,但是实际上被选中的是其他视图。举个例子,下方效果图中有两个按钮,当点击不重合的地方,显示的是点击当前视图,当点击重合地方时,点击的是下方的视图。

意思是这个方法会递归调用 -pointInside:withEvent: 这个方法,point是接收者的坐标系,也就是点击的这个点在视图中的相对坐标。

实现点击事件穿透的本质是在视图中判断点击的点是否属于你想要点击的视图,然后判断返回相应的视图即可。
在这里,附上上方效果做法。
自定义按钮视图,并放置一个可传入的按钮。如下:

设置UI和点击方法,如下:

扩大视图点击区域的本质是判断所点击的点是否在于你想要扩大的区域上。在这里,楼主所设置的扩大区域是边线外增加30。实现如下,自定义视图:

设置UI和点击方法,如下:

以上是关于iOS点击事件穿透以及扩大视图的响应区域的主要内容,如果未能解决你的问题,请参考以下文章

iOS之扩大UIButton(UIView)的点击范围

IOS 触摸事件分发机制详解

Android 扩大 View 的点击区域

iOS:如何实现遮罩视图事件穿透?

Android 扩大 View 的点击区域

iOS 子视图响应父视图的点击事件