惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
S
SegmentFault 最新的问题
Jina AI
Jina AI
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
WordPress大学
WordPress大学
爱范儿
爱范儿
博客园 - Franky
量子位
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网

博客园 - zhoup

文鹏教育_jmeter培训_逻辑控制器_循环取样器 02 jmeter性能测试系列_JForum测试论坛的环境搭建 01 jmeter性能测试系列_Jmeter的体系结构 NSTimer的使用[zhuang] 实战p12文件转pem文件 UIViewContentMode各类型效果 给iOS开发新手送点福利,简述文本属性Attributes的用法 IOS 设置导航栏全局样式 xcode 插件地址 AFNnetworking详解 NSRunLoop详解 利用SQL注入漏洞登录后台的实现方法 Xcode 7免证书真机调试 [转]CABasicAnimation用法 zhuang 定制iOS 7中的导航栏和状态栏 zhuang 自定义Xcode代码模板:Code Snippet [zhang] ViewController的生命周期分析和使用 iOS开发--一些UITabBarItem属性的设置[转] UINavigationItem UINavigationBar 关系分析[转]
iOS 在tableView上添加button导致按钮没有点击效果和不能滑动...
zhoup · 2016-01-06 · via 博客园 - zhoup

转载请注明出处。

今天在调试代码的时候,在tableviewcell上添加button,发现button快速点击的话,是看不出点击效果的,查找资料发现,

 ios7上UITableViewCell子层容器是UITableViewCellScrollView,

ios6的则是UITableViewCellContentView.点击效果应该是被ScrollView的触摸延迟给阻拦了。

经过一番摸索,终于找到解决方法。

第一步:将 tableView  的 delaysContentTouches 设置为NO,

第二步:在自定义cell的初始化方法里添加如下代码

for (id obj in self.subviews) {

if ([NSStringFromClass([obj class])

isEqualToString:@"UITableViewCellScrollView"])

{

UIScrollView *scroll = (UIScrollView *) obj; scroll.delaysContentTouches =NO; break; } } 

以上2步可以解决按钮没有点击效果的问题,但之后发现,如果滑动tableView的时候,触碰区域正好在按钮上的话,是滑动不了的。

这个时候就得

- (BOOL)touchesShouldCancelInContentView:(UIView *)view { return YES; }

本来以上方法在ios7以下可以解决,因为公司要适配ios8,当切换ios8的时候,发现又没有点击效果了,于是又查找一番.

第四步:在自定义的tableView初始化方法里添加如下代码

for (id view in self.subviews) { // looking for a UITableViewWrapperView if ([NSStringFromClass([view class]) isEqualToString:@"UITableViewWrapperView"]) { if([view isKindOfClass:[UIScrollView class]]) { // turn OFF delaysContentTouches in the hidden subview UIScrollView *scroll = (UIScrollView *) view; scroll.delaysContentTouches = NO; } break; } }

或者第四步改成 在你的viewController添加tableview的时候,加上以下代码

 if ([UIDevice currentDevice].systemVersion.intValue >= 8)

{ for (UIView *currentView in table.subviews) {

if ([currentView isKindOfClass:[UIScrollView class]])

{ ((UIScrollView *)currentView).delaysContentTouches = NO; break; } } }