关于UIButton点击监听无响应问题
2018-01-08 10:34
281 查看
一、问题描述
因为项目需要,需要UITableView上添加固定的筛选表头,一直固定,不能随UITableView滚动。所以直接将表头与UITableView分离,将它添加到控制器的UIView上,即添加到UITableView的父视图上,与UITableView同级。然后表头上添加三个UIButton,效果达到预期,但问题随即出现。筛选表头上的UIButton无法响应点击事件,刚开始以为造成的原因是手误把UIButton的父视图或者UIButton属性userInteractionEnabled被设置为NO,试着UIButton的父视图和UIButton的userInteractionEnabled统统设置YES,仍然无法解决这个问题。![](https://images2015.cnblogs.com/blog/637377/201608/637377-20160822014120073-271098616.gif)
回到顶部
二、问题分析
UIButton不能响应点击事件的原因大概有以下三种:1. UIButton的userInteractionEnabled默认YES,如果设置NO,UIButton就不会有响应点击事件,同时如果 UIButton的父视图的userInteractionEnabled属性为NO,UIButton也会受到影响,不会有响应。
从UIButton的父视图和UIButton的userInteractionEnabled统统设置YES,这个问题仍然无法解决,所以不是这个问题。
2. 另外就是button本身的frame问题,或者有没有一层视图盖住了button导致按钮无响应,简单来说就是按钮本身和按钮他爹(父视图)的问题。
3. UIButton不能响应点击事件的另一个原因是和UIButton的父视图有关系。如果父视图frame是CGRe
4000
ctZero,或者UIButton超出父视图,UIButton还是会显示的,但诡异的是UIButton是不会响应点击事件的,所以要调整父视图的frame或者UIButton位置。
第一种:试过了,排除。
第二种:因为用到MBProgressHUD,所以第二种有可能。但经过调试,发现MBProgressHUD是隐藏的,不会遮挡点击事件,同时假设MBProgressHUD不隐藏,应该同级的UITableView也不能点击,但UITableView能响应点击事件,所以第二种也排除。
第三种:但先设置UIButton的父视图背景色为红色,同时先把UIButton都去掉,调试发现UIView并没有显示出来。打印UIView的frame,值为{{0, 0}, {414, 44}}。原来问题出现在这里。为什么不能显示?
![](https://images2015.cnblogs.com/blog/637377/201608/637377-20160822041928980-1713397435.png)
原来我设置了frame,还用Masonry设置约束。设置了约束,frame是无效的,同时因为约束设置不合理,导致UIView无法显示。
[self.filerView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.view.mas_left); make.right.equalTo(self.view.mas_right); make.top.equalTo(self.view.mas_top); }];
回到顶部
三、问题解决
UIView的frame去掉,同时设置一个高度约束。[self.filerView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(strongSelf.view.mas_left); make.right.equalTo(strongSelf.view.mas_right); make.top.equalTo(strongSelf.view.mas_top); make.height.equalTo(@44); }];
效果如下:
![](https://images2015.cnblogs.com/blog/637377/201608/637377-20160822021054058-506533674.png)
然后加上UIButton,UIButton能响应点击事件
![](https://images2015.cnblogs.com/blog/637377/201608/637377-20160822040940230-1353505150.gif)
相关文章推荐
- IOS开发之关于UIButton点击没有响应问题
- IOS开发之关于UIButton点击没有响应问题
- IOS开发之关于UIButton点击没有响应问题
- ios开发_关于UIButton点击没有响应问题的阐述
- 关于监听EditText时需要点击两次才有响应问题
- 关于跳转到空白页面进行新浪微博分享,当点击取消保存到草稿时无法监听,返回空白页问题的解决方案
- 关于对话框上的按钮不响应点击事件的问题
- 关于Button点击两次才响应事件相关问题
- 关于自定义视图不响应点击的问题
- 关于jquerymobile的按钮点击在ios设备上响应慢的问题
- Android中关于EditText点击事件的响应问题记录
- UIButton无法响应点击事件问题
- 关于v4包的Fragment过渡动画的事件监听无响应问题解决
- UIButton无法响应点击事件问题
- 关于jquerymobile的按钮点击在ios设备上响应慢的问题
- 关于Android中Listview的item点击不响应问题的解决
- UIButton 点击事件响应延迟 问题解决
- 关于无边框EXE程序窗口嵌入IE浏览器WebBrowser右键属性窗口无法点击响应问题的解决
- 关于UIButton嵌入到UIView点击无反应问题的解决方法和delegate的简单用法示例(转载)
- 原创:关于UIButton嵌入到UIView点击无反应问题的解决方法和delegate的简单用法示例