iOS扩大UIButton按钮的点击范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS扩大UIButton按钮的点击范围相关的知识,希望对你有一定的参考价值。

参考技术A 有时候会遇到按钮本身较小,不好点击的情况。这个时候可能不方便扩大按钮,就可以使用这个方法来扩大点击范围但是不需要扩大按钮本身。

利用了UIButton点击响应原理,UIButton在点击后,会调用hittest方法,来检查点击是否在范围内,如果不在则交给父view继续hittest。这个方法就是利用重写了hittest方法,来扩大点击范围。

创建一个UIButton的category。定义一个方法,传入上,左,下,右四个参数。每个参数代表每个方向上扩大的距离。

因为category无法增加属性,就利用runtime来给UIButton添加四个属性。
定义四个属性的key。

实现.h定义的方法,给四个属性赋值

重写hittest方法,如果点击的位置在扩大之后的范围内,就直接返回,否则就还是交给父类处理。

传入上左下右需要扩大的距离。

如果为负数则是缩小点击范围。

需要注意的是,扩大的范围不能超过父View的范围,超过了父View的范围点击就不能生效了。

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

参考技术A UI给的图有时候很小,或者有个需求需要我们扩大button的点击区域

我们一般的操作是在button 上添加一个view 增加点击事件,但是我们还有其他更方便的方法去扩大button 的点击区域。

怎样来实现这个功能呢?又有多少种方式可以实现呢?下面一一来讲。

当用户点击屏幕后:

如下图所示:

然而事件的响应链条是事件链条的逆向,根据视图层级的添加顺序从后往前的

继承与UIButton,重写下面的方法:

其实我们上面所做的变化其实如果仔细看点击区域还是个矩形,如果需要我们将点击区域规定在圆形范围 内,我们可以这样做:

以上是关于iOS扩大UIButton按钮的点击范围的主要内容,如果未能解决你的问题,请参考以下文章

iOS扩大按钮点击范围

iOS-扩大按钮点击范围

为点击事件 iOS 添加一个 inputview 到 UIButton

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

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

UIButton移动动画