Sian 发表于 2014-8-9 21:49:56

解决ios7按钮高亮延时问题

1、问题现象

[*]TableView上的按钮点击时出现高亮延时
[*]ScrollView上的按钮点击出现高亮延时
[*]TableViewCell上的按钮点击出现高亮延时

2、问题分析
这是一个响应顺序的问题,可能oc在多层事件处理时的一种机制,TableView继承自ScrollView,所以根本原因在于ScrollView上,但还是可以解决的
scrollView有个属性叫delaysContentTouches,将该属性设置成NO即可 scrollView.delaysContentTouches = NO;根本原因不做深究,这里以解决问题为出发点

另外一点,TableView如果设置了delaysContentTouches = NO好像也不行,但在iOS6中却没有这个问题,什么原因呢?
iOS6中TableViewCell上面是contentView,再上面才是子view,所以设置了TableView的delaysContentTouches就可以解决了,但iOS7不行
iOS7中TableViewCell比iOS6要复杂,iOS7中的TableViewCell上面是一个scrollView,再上面才是contentView,所以这里又夹了一层scrollView;
所以iOS7中:
1、设置tableView.delaysContentTouches = NO;
2.1、UIScrollView *sv =[ cell.subviews firstobject];// 取到Cell上的scrollView
2.2、sv.delaysContentTouches = NO;// 取消响应延时
问题搞定!
可以在给TableViewCell赋值时加上这一句,也可以在重写Cell或定义Cell时设置该属性
页: [1]
查看完整版本: 解决ios7按钮高亮延时问题