一、问题描述

因为项目需要,需要UITableView上添加固定的筛选表头,一直固定,不能随UITableView滚动。所以直接将表头与UITableView分离,将它添加到控制器的UIView上,即添加到UITableView的父视图上,与UITableView同级。然后表头上添加三个UIButton,效果达到预期,但问题随即出现。筛选表头上的UIButton无法响应点击事件,刚开始以为造成的原因是手误把UIButton的父视图或者UIButton属性userInteractionEnabled被设置为NO,试着UIButton的父视图和UIButton的userInteractionEnabled统统设置YES,仍然无法解决这个问题。

二、问题分析

UIButton不能响应点击事件的原因大概有以下三种:

1. UIButton的userInteractionEnabled默认YES,如果设置NO,UIButton就不会有响应点击事件,同时如果 UIButton的父视图的userInteractionEnabled属性为NO,UIButton也会受到影响,不会有响应。

从UIButton的父视图和UIButton的userInteractionEnabled统统设置YES,这个问题仍然无法解决,所以不是这个问题。

2. 另外就是button本身的frame问题,或者有没有一层视图盖住了button导致按钮无响应,简单来说就是按钮本身和按钮他爹(父视图)的问题。

3. UIButton不能响应点击事件的另一个原因是和UIButton的父视图有关系。如果父视图frame是CGRectZero,或者UIButton超出父视图,UIButton还是会显示的,但诡异的是UIButton是不会响应点击事件的,所以要调整父视图的frame或者UIButton位置。

第一种:试过了,排除。

第二种:因为用到MBProgressHUD,所以第二种有可能。但经过调试,发现MBProgressHUD是隐藏的,不会遮挡点击事件,同时假设MBProgressHUD不隐藏,应该同级的UITableView也不能点击,但UITableView能响应点击事件,所以第二种也排除。

第三种:但先设置UIButton的父视图背景色为红色,同时先把UIButton都去掉,调试发现UIView并没有显示出来。打印UIView的frame,值为{{0, 0}, {414, 44}}。原来问题出现在这里。为什么不能显示?

原来我设置了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(@);
}];

效果如下:

然后加上UIButton,UIButton能响应点击事件

UIButton无法响应点击事件的更多相关文章

  1. 设置TextView下划线并响应点击事件(SpannableString)

    下面是一个20行的完整Demo代码:基本原理是使用一个SpannableString并设置其ClickableSpan来响应点击事件. TextView useInfo = (TextView) fi ...

  2. 隐藏自定义的tabbar之后,push到B视图,B视图的键盘工具条无法响应点击事件

    我的情况如下: 在TabbarViewController中隐藏了系统的tabbar,然后自定义tabbar,A B C D 4个视图都有UINavigationController,A视图 使用的是 ...

  3. iOS开发-UIImageView响应点击事件

    UIImageView是不能够响应点击事件的,在开发过程中我们需要经常对头像等添加点击事件,上网搜索一番后发现有如下两个方法: 1.找到点击图片Event,添加事件处理函数 UIImageView.u ...

  4. c# 给button添加不规则的图片以及用pictureBox替代button响应点击事件

    1.Flat button 用这个方法,前提是要把button的type设置为Flat button1.TabStop = false;button1.FlatAppearance.BorderSiz ...

  5. TextView下划线,部分文字并响应点击事件(SpannableString)

    TextView useInfo = (TextView) findViewById(R.id.info); useInfo.setText("开始即表示您同意遵守"); Stri ...

  6. Swift-ImageView响应点击事件

    随着Swift语言的不断更新迭代,纯Swift语言编写的代码更加紧凑简单,结合StoryBorad的使用,使开发苹果APP的门槛降低了不少.个人也是比较推荐使用Interface Builder去生成 ...

  7. view上添加点手势 button无法响应点击事件

    在view 上添加手势 有的时候  会把Button的 点击事件盖掉,这个 时候 我们用UITapGestureRecognizer的代理方法 //手势的代理方法 - (BOOL)gestureRec ...

  8. Android EditText中插入图片并响应点击事件

    EditText中插入图片基本就是两种方法: ,通过Html.fromHtml(..)来实现 [mw_shl_code=java,true]eText.append(Html.fromHtml(&qu ...

  9. 【转】Android - Button(按钮)的响应点击事件的4种写法

    原文网址:http://www.yrom.net/blog/2011/12/12/android-4-onclicklistener-of-button/ Button控件setOnclickList ...

随机推荐

  1. ubuntu下面更改用户名的方法

    在装HADOOP 系统时候不小心, 没有将三台机器的用户名设置为一致的用户名,导致后面发生很多麻烦.下面总结一下UBUNTU中改用户名的方法. 1.  先给系统添加一个super用户,我们用这个用户名 ...

  2. 编译CM14.1(sudmod71.1)过程记录

    编译CM14.1内存要求很高,至少8G以上,我的6G也可以搞定,交换空间分配大一点. 1.安装平台 建议安装Deepin 15.3桌面版系统,系统UI好看. 2.配置环境 (1)安装编译依赖库 sud ...

  3. 记一周cdqz训练

    #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.com/w ...

  4. UVa11427 Expect the Expected

    数学期望 概率递推 每一天的概率都是独立且相同的.可以先推出每天打i盘赢j盘的概率f[i][j] f[i][j]=f[i-1][j]*(1-p) + f[i-1][j-1]*p 输 赢 设此人打一天胜 ...

  5. Zabbix监控nginx-rtmp status(json版)

    与前面的文章 zabbix监控nginx-rtmp status(html版)区别只在于取值的页面不一样 http://127.0.0.1:81/control/get/all_streams sta ...

  6. Parallel.Foreach

    随着多核时代的到来,并行开发越来越展示出它的强大威力! 使用并行程序,充分的利用系统资源,提高程序的性能.在.net 4.0中,微软给我们提供了一个新的命名空间:System.Threading.Ta ...

  7. 如何防止应用因获取IDFA被AppStore拒绝

    由于Appstore禁止不使用广告而采集IDFA的app上架,友盟提供IDFA版和不含IDFA版两个SDK,两个SDK在数据上并没有差异,采集IDFA是为了防止今后因为苹果可能禁止目前使用的openu ...

  8. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

  9. vim as python IDE

    参照Martin Brochhaus大神的视频,今天我也尝试了一下配置vim python IDE以后使用过程中只需要https://github.com/wyj1239630590/vim-as-a ...

  10. TCP的三次握手(建立连接)和四次挥手(关闭连接)

    参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/94 ...