你有没有遇到过Button加在UITableViewHeaderFooterView的self.contentView上导致不能响应点击的情况,下面记录一下我遇到的原因和解决方法:

代码如下:

- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithReuseIdentifier:reuseIdentifier]) { self.titleLabel = [[UILabel alloc]init];
self.titleLabel.textColor = [UIColor redColor];
self.titleLabel.font = [UIFont systemFontOfSize:];
[self.contentView addSubview:self.titleLabel];         self.titleLabel.frame = CGRectMake(10, 15, 50, 20);

self.cleckBtn = [UIButton buttonWithType:UIButtonTypeCustom];

        [self.cleckBtn setTitleColor:[UIColor blackColor] forState:(UIControlStateNormal)];
self.cleckBtn.titleLabel.font = [UIFont systemFontOfSize:];
[self.cleckBtn addTarget:self action:@selector(cleckTouchBtn:) forControlEvents:UIControlEventTouchUpInside];
[self.contentView addSubview:self.cleckBtn];
}
return self;
}
- (void)cleckTouchBtn:(UIButton *)button{ if (self.block) {
self.block(self.titleLabel.text,self.cleckBtn);
}
}
-(void)layoutSubviews{ self.cleckBtn.frame = CGRectMake( , , , ); }

分析:

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位置。

依次排除...

最后发现,原因如下:

-(void)layoutSubviews{

self.cleckBtn.frame = CGRectMake(100 , 10, 100 , 30);

}

在该方法中,我没有调用父类方法,意味着放弃了里面其他子视图的布局,只布局这一个按钮.导致frame造成不能点击响应.

解决方法:

1>方法一:

-(void)layoutSubviews{

    [super layoutSubviews];
self.titleLabel.frame = CGRectMake(10, 15, 50, 20);
self.cleckBtn.frame = CGRectMake(100 , 10, 100 , 30);
}

2>方法二:

直接把子控件加在self上就可以了,不需要加载self.contentView也是可以的.

Button加在UITableViewHeaderFooterView的self.contentView上导致不能响应点击的更多相关文章

  1. iOS开发——网络Swift篇&NSURLSession加载数据、下载、上传文件

    NSURLSession加载数据.下载.上传文件   NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍.   1,使用Data Task加载数据 使用全局的 ...

  2. html图片上传阅览并且点击放大

                  关闭   qq_31540195的博客       目录视图 摘要视图 订阅 异步赠书:9月重磅新书升级,本本经典           程序员9月书讯      每周荐书: ...

  3. jQuery的$.ajax方法响应数据类型有哪几种?本质上原生ajax响应数据格式有哪几种,分别对应哪个属性?

    jQuery的$.ajax方法响应数据类型有:xml.html.script.json.jsonp.text 本质上原生ajax响应数据格式只有2种:xml和text,分别对应xhr.response ...

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

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

  5. H5实现多图片预览上传,可点击可拖拽控件介绍

    版权声明:欢迎转载,请注明出处:http://blog.csdn.net/weixin_36380516 在做图片上传时发现一个蛮好用的控件,支持多张图片同时上传,可以点击选择图片,也可以将图片拖拽到 ...

  6. ios上有时候提交按钮点击两次才可以取消输入框软键盘

    ios上有时候提交按钮点击两次才可以取消输入框软键盘,点击第一次软键盘消失,点击第二次输入框页面消失,这样用户体验不好.我的做法是用 touchstart 代替click来处理 反应快,但是有时候会出 ...

  7. Java+Selenium 上传文件,点击选择“浏览文件”按钮,报错invalid argument

    Java+Selenium 上传文件,点击选择"浏览文件"按钮,报错invalid argument 解决代码: Actions action=new Actions(driver ...

  8. Xamarin.Forms listview中的button按钮,实现带着参数返回上一级页面

    今天在做列表显示的时候遇到一个问题,就是在ListView中如何才能让一个button的按钮工作并且包含参数呢? 其实有点类似于rep里的控件无法起获取一样.在Xamarin中,当你button绑定事 ...

  9. iOS 在tableView上添加button导致按钮没有点击效果和不能滑动的 zhuang

    转载请注明出处. 今天在调试代码的时候,在tableviewcell上添加button,发现button快速点击的话,是看不出点击效果的,查找资料发现, ios7上UITableViewCell子层容 ...

随机推荐

  1. LoadRunner(4)

    一.LoadRunner工具的组成 1.VuGen 虚拟用户脚本生成器 脚本好比:武器 VuGen好比:兵工厂 VU好比:士兵 2.Controller 压力调度控制台 好比:总指挥部 3.Analy ...

  2. 下划线文字,鼠标hover小样式

    CSS样式 //不只是a标签,其他有下划线的字体也可以 a:hover{ color: #ff3100; //这里的颜色是指字体颜色不是波浪下划线效果的svg图颜色     text-decorati ...

  3. rac 关于RACScheduler的一点学习

    RACScheduler  信号调度器,是一个线性执行队列,rac中的信号可以在RACScheduler上执行任务.发送结果,底层用GCD封装的. rac中提供生成线程的几个方法: 1:schedul ...

  4. 一文学会redis从零到入门

    本文参照视屏学习整理:https://www.bilibili.com/video/av16841549/?p=9 相关软件.资料: 基本条件:有虚拟机或相关linux系统,熟悉基本linux操作 本 ...

  5. prevAll([expr]) 查找当前元素之前所有的同辈元素

    prevAll([expr]) 概述 查找当前元素之前所有的同辈元素 可以用表达式过滤.大理石构件维修 参数 exprStringV1.2 用于过滤的表达式 示例 描述: 给最后一个之前的所有div加 ...

  6. Python 爬取喜马拉雅音频

    一.分析音频下载相关链接地址 1. 分析专辑音频列表页面   在 PC端用 Chrome 浏览器中打开 喜马拉雅 网站,打开 Chrome开发者工具,随意打开一个音频专辑页面,Chrome开发者工具中 ...

  7. oracle的事务

    一.事务 保证数据的一致性,有一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败 如:网上转账就是典型的要用事物来处理,用以保证数据的一致性 二.事务和锁 当执行事物操作时(dml语 ...

  8. python 处理 json 四个函数dumps、loads、dump、load的区别

    1 .json.dumps() 函数是将一个 Python 数据类型列表(可以理解为字典)进行json格式的编码(转换成字符串,用于传播)eg, dict = {"age": &q ...

  9. Jmeter工具做接口测试

    一.安装Jmeter 1.安装JDK ①下载jdk,到官网下载jdk,地址:http://jmeter.apache.org/download_jmeter.cgi ② 安装jdk(Oracle官网下 ...

  10. Turtle库画小猫咪

    视频请点击这里哟 这个是用python库画的小猫咪,前面一步步的画整个猫的整个身体,具体步骤都写在了注释之中.身体部分画的比较快,后面画了5个心,由于画心的时候要改变好多度数,而且每次只前进一点点,所 ...