一般来说,按钮的点击范围是跟按钮的大小一样的。若按钮很小时,想增大点击区域,网上通用的方法有
①设置btn图片setImage,然后将btn的size设置的比图片大
②在btn上添加一个比较大的透明btn
但以上有问题,若btn无图片就无法设置;添加透明btn则会改变view的层级。所以此时最好的方法是重写btn的

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

方法。例如:

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
//当前btn大小
CGRect btnBounds = self.bounds;
//扩大点击区域,想缩小就将-10设为正值
btnBounds = CGRectInset(btnBounds, -, -); //若点击的点在新的bounds里,就返回YES
return CGRectContainsPoint(btnBounds, point);
}

对CGRectInset的解释
CGRectInset(CGRect rect, CGFloat dx, CGFloat dy)作用是将rect坐标按照(dx,dy)进行平移,对size进行如下变换
新宽度 = 原宽度 - 2*dx;新高度 = 原高度 - 2*dy
即dx,dy为正,则为缩小点击范围;dx,dy为负的话,则为扩大范围

UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(, , , )];
[self.view addSubview:view1]; CGRect rect2 = CGRectInset(view1.frame, , );
UIView *view2 = [[UIView alloc]initWithFrame:rect2];
[self.view addSubview:view2];
NSLog(@"%@",NSStringFromCGRect(rect2));

结果为

//{{110, 120}, {180, 160}}

比较这两个view的frame,即可印证该结论。

iOS修改button的点击范围的更多相关文章

  1. iOS防止button重复点击

    项目中常会遇到在按钮的点击事件中去执行一些耗时操作.如果处理不当经常会出现连续多次点击push多次的情况,造成不好的用户体验. 一种情况是用户快速连续点击,这种情况无法避免.另一种情况是点击一次后响应 ...

  2. 修改button的可点击区域

    需求:在cocos2dx引擎中,button的点击区域和button图片的大小是一样的,但是我需要修改可点击区域的大小和位置,需要修改引擎源码: button提供的接口中并没有和touch相关,but ...

  3. ios 添加到cell 上的button点击无效!扩大button的点击区域(黑魔法)

    一般情况下点击效果都是正常的!要不然你对它做了什么?一般细心的小伙伴都没有遇到这种情况,但是呢! 当然我是二班的!在这里我主要讲两个问题,解决问题和普及魔法. 一.普及问题(button在cell上点 ...

  4. [转]iOS Safari 中click点击事件失效的解决办法

    iOS Safari 中click点击事件失效的解决办法 问题起因: 在微信公众号开发(微站)过程中用jquery的live方法绑定的click事件点击无效(不能执行) 问题描述 当使用委托给一个元素 ...

  5. 同时屏蔽ios和android下点击元素时出现的阴影

    在ios4+和android2+系统,当手指触摸屏幕a标签链接或按钮时,会产生不同的效果,对于ios点击元素的时候,就会出现一个半透明的灰色背景:对于android则出现红色的边框.对这2个系统自带的 ...

  6. EditText输入为空button不可点击搜索

    一丶任务详情 二丶改动后演示效果 三丶改动过程 分析:非常明显这里是须要监听EditText,推断输入字符串长度是否不为0来改变Button样式 首先的屡清楚代码逻辑在适当的位子加监听推断是最好的处理 ...

  7. iOS 修改APP工程名字

    我们在iOS开发中,难免会遇到项目做到一半要改名字的情况.如果项目名差的太大,工程名看起来总是不舒服的,就会想着为工程改个贴切的名字,那么你就为用到本文记录的内容. 如何修改工程名呢? 下面我就拿一个 ...

  8. IOS 修改UIAlertController的按钮标题的字体颜色,字号,内容

    IOS 修改UIAlertController的按钮标题的字体颜色,字号,内容 UIAlertController *alertVC = [UIAlertController alertControl ...

  9. 移动web在ios和android下点击元素出现阴影问题

     移动web开发经验总结 1.-webkit-tap-highlight-color:rgba(255,255,255,0)可以同时屏蔽ios和android下点击元素时出现的阴影.备注:transp ...

随机推荐

  1. ruby on rails 在centos 7下的安装配置

    因为想安装最新版本,所以通过编译安装. 安装前准备工具和库文件: sudo yum install gcc gcc-c++ openssl-devel readline-devel gdbm-deve ...

  2. javaWeb学习-----session

    一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...

  3. 1.mysql基础之 php 连接

    1.连接数据库 $db=@mysql_connect('DB_HOST','DB_USER','DB_PASS') or die("Unable to connect"); DB_ ...

  4. HttpResponseMessage和HttpResponseException (转)

    Web API 中提供了 HttpResponseMessage 与 HttpResponseException 用于处理返回讯息,HttpResponseMessage 用于返回一个来自于客户端的请 ...

  5. htnl5中设置文本单行显示,超出部分打省略号,鼠标移到文本时alt出全部文本内容

    Html代码: 1.<span class="my-span" title="无数无数无数无数无数">机构</span> Css样式: ...

  6. WPS for Linux,系统缺失字体

    启动WPS for Linux后,出现提示"系统缺失字体" . 出现提示的原因是因为WPS for Linux没有自带windows的字体,只要在Linux系统中加载字体即可. 具 ...

  7. ConCurrent in Practice小记 (3)

    ConCurrent in Practice小记 (3) 高级同步技巧 Semaphore Semaphore信号量,据说是Dijkstra大神发明的.内部维护一个许可集(Permits Set),用 ...

  8. int数组转string数组和int数组转string中间用逗号隔开

    //int 数组转string数组 ,,,}; string result=test.Select(i => i.ToString()).ToArray(); //int 数组转 string中 ...

  9. SOC芯片的FPGA原型验证

    FPGA验证在SOC设计非常重要,一般而言,做一些RAM和FIFO的替换以及相应代码转换.具体分下面几步: 1 替换RAM,FIFO和时钟 RAM和FIFO控制器需要RAM的接口都放在了设计顶层,方便 ...

  10. 转向Web

    一直搞桌面软件开发,用C++绘界面那蛋疼的日子是记忆犹新,也不想钻研什么网络协议了,好好搞Web方面吧,它的开放很让人激动 Python是个好东西,适合许多场合,包括云计算,科学计算,软件测试,运维等 ...