有两种方法可以处理这个问题:

1.视图中

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];

button.frame = CGRectMake(100, 100, 20, 20);

button.backgroundColor = [UIColor yellowColor];

[button addTarget:self action:@selector(testButtonAction:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button];

button.minHitTestWidth = 180;// 点击区域宽高

button.minHitTestHeight = 180;

2.搭配类别使用

.h 文件

#import

@interface UIButton (HitAreaExpand)

@property (nonatomic) CGFloat minHitTestWidth;

@property (nonatomic) CGFloat minHitTestHeight;

@end

.m 文件

#import "UIButton+HitAreaExpand.h"

#import

@implementation UIButton (HitAreaExpand)

- (CGFloat)minHitTestWidth {

NSNumber * width = objc_getAssociatedObject(self, @selector(minHitTestWidth));

return [width floatValue];

}

- (void)setMinHitTestWidth:(CGFloat)minHitTestWidth {

objc_setAssociatedObject(self, @selector(minHitTestWidth), [NSNumber numberWithFloat:minHitTestWidth], OBJC_ASSOCIATION_ASSIGN);

}

- (CGFloat)minHitTestHeight {

NSNumber * height = objc_getAssociatedObject(self, @selector(minHitTestHeight));

return [height floatValue];

}

- (void)setMinHitTestHeight:(CGFloat)minHitTestHeight {

objc_setAssociatedObject(self, @selector(minHitTestHeight), [NSNumber numberWithFloat:minHitTestHeight], OBJC_ASSOCIATION_ASSIGN);

}

- (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event {

return CGRectContainsPoint(HitTestingBounds(self.bounds, self.minHitTestWidth, self.minHitTestHeight), point);

}

CGRect HitTestingBounds(CGRect bounds, CGFloat minimumHitTestWidth, CGFloat minimumHitTestHeight) {

CGRect hitTestingBounds = bounds;

if (minimumHitTestWidth > bounds.size.width) {

hitTestingBounds.size.width = minimumHitTestWidth;

hitTestingBounds.origin.x -= (hitTestingBounds.size.width - bounds.size.width)/2;

}

if (minimumHitTestHeight > bounds.size.height) {

hitTestingBounds.size.height = minimumHitTestHeight;

hitTestingBounds.origin.y -= (hitTestingBounds.size.height - bounds.size.height)/2;

}

return hitTestingBounds;

}

@end

android 点击热区,增大UIButton的点击热区相关推荐

  1. IOS小技巧–用runtime 解决UIButton 重复点击问题

    IOS小技巧–用runtime 解决UIButton 重复点击问题 什么是这个问题 我们的按钮是点击一次响应一次, 即使频繁的点击也不会出问题, 可是某些场景下还偏偏就是会出问题. 通常是如何解决 我 ...

  2. iOS小技巧:用runtime 解决UIButton 重复点击问题

    什么是这个问题 我们的按钮是点击一次响应一次, 即使频繁的点击也不会出问题, 可是某些场景下还偏偏就是会出问题. 通常是如何解决 我们通常会在按钮点击的时候设置这个按钮不可点击. 等待0.xS的延时后 ...

  3. Android开发笔记(四十三)点击事件

    按钮点击 常用按钮点击 1.单击事件,主要用于Button和ImageButton控件,布局视图与TextView.ImageView控件用的也比较多.相关类名与方法说明如下: 监听器类名 : Vie ...

  4. Android开发之点击输入法外部关闭键盘点击输入法外部关闭输入法的解决方法

    在此做个笔记,防止遗忘,可能以后有需要. 先看下效果图 先讲解下思路: 首先在actviity里面获取到当前获取焦点的控件,判断当前控件是不是输入法弹起的那个EditText,然后再Activity的 ...

  5. ios 连续点击button_iOS小技巧:用runtime 解决UIButton 重复点击问题

    作者:uxyheaven 授权本站转载. 什么是这个问题 我们的按钮是点击一次响应一次, 即使频繁的点击也不会出问题, 可是某些场景下还偏偏就是会出问题. 通常是如何解决 我们通常会在按钮点击的时候设 ...

  6. Android 实现类似于QQ空间相册的点击图片放大,再点后缩小回原来位置

    前几天看到了有人在android5.0上实现了如下图一样的效果,我自己就去搜了下.参考了国外一篇文章和国内的一篇文章,最终实现了想要的效果.具体参考的网址我已经贴到文章末尾,大家可以去英文的那个网站看 ...

  7. Android 中 利用 AccessibilityService 辅助服务 模拟点击事件

    在 Android 中想要执行一些模拟点击操作,在无法修改页面源码的情况下,通常只能使用 adb 和借助辅助功能两种方式. Adb 方式 借助 adb shell 的命令,我们可以使用下面的方式模拟一 ...

  8. Android 利用adb命令 使App自动点击屏幕指定位置

    public class AutoClickActivity extends AppCompatActivity implements View.OnClickListener {private Ap ...

  9. android adb点击坐标,Android 利用adb命令 使App自动点击屏幕指定位置

    public class AutoClickActivity extends AppCompatActivity implements View.OnClickListener { private A ...

最新文章

  1. Clean-Code: 注释
  2. 无线路由器结合Windows Radius Server实现通过域账户连接公司无线网络
  3. 网站基本建设必备窍门了解一下!
  4. XSLT简单教程--XSLT的实例
  5. 很漂亮个人主页自带音乐源码
  6. django-删除学生数据
  7. 脱离微信,在硬件设备运行小程序?小程序硬件框架大揭秘!
  8. 马克思知识点总结(一)
  9. C# 使用同余代换简化多个大数相乘取模运算
  10. 开源 免费 java CMS - FreeCMS1.5 标签 ajaxStore
  11. 【数学建模】基于matlab重庆三号线地铁运行仿真【含Matlab源码 042期】
  12. 中南大学电磁场理论matlab,电磁场 点电荷 电场线 电势 matlab仿真 中南大学.doc_蚂蚁文库...
  13. 洛谷 P3137 [USACO16FEB]圆形谷仓Circular Barn_Silver
  14. 微信最新数据:每天有 10.9 亿人打开微信,7.8 亿人进入朋友圈
  15. uni-app animation动画
  16. 随笔3:有调节的中介示例之 Model 1
  17. HTTP请求方法介绍
  18. 聊聊Elasticsearch的NodesSniffer
  19. android表情编码与解码
  20. 赋能 打造应对不确定性的敏捷团队 pdf_周末荐书 | 赋能:打造应对不确定性的敏捷团队...

热门文章

  1. 【软件工程第三次作业】
  2. java5 ReadWriteLock用法--读写锁实现
  3. LUCK——组合数学
  4. jQuery实现动态地获取系统时间
  5. TensorFlow2.0(六)--超参数搜索
  6. vue 悬浮按钮组件_如何搭建和发布一个 Vue 组件库
  7. 数据结构栈之火车出站小结
  8. 辗转相除求最大公约数最小公倍数 扩展欧几里得算法
  9. MYSQL添加约束的两种方法
  10. 单片机魔法编程百度云_[2020][欧美][喜剧][魔法教母]高清资源百度云,高清1080P资源在线!...