scroll上的button延迟响应问题

当UIButton位于UIScrollView内时,由于delaysContentTouches属性默认为YES,导致按钮响应延迟。解决方案包括将父视图的delaysContentTouches设为NO,并处理UITableView在不同iOS版本的特殊情况,以及自定义UIScrollView子类重写touchesShouldCancelInContentView:方法以确保拖动行为正常。
摘要由CSDN通过智能技术生成

UIButton在某些情况下不能立刻响应TouchDown事件,换句话说,迅速点击按钮时,你是永远看不见这个按钮的高亮状态的.
出现这种情况时,这些按钮都在UIScrollView的子类上.这是因为 scroll有一个属性delaysContentTouches,默认值为YES.值为YES时,UIScrollView会在接收到手势时延迟150ms来判断该手势是否能够出发UIScrollView的滑动事件.

解决方案:

1、将UIButton所有属于UIScrollView的父视图的delaysContentTouches属性设置成为NO,此时UIScrollView会立马将接收到的手势分发到子视图上。

  • 其中UITableView需要设置多层.

UITableView(包括UITableViewCell在内)在iOS7和iOS8中的视图结构是不同的,且存在着很多我们在编码时永远接触不到的视图,但我们可通过Debug将其subviews逐个逐个找出来。

iOS7:UITableView中存在n+1个UIScrollView,一个是UITableView本身,另外n个存在于UITableViewCell与cell的contentView之间,类名为UITableViewCellScrollView,活的不久,仅存在于iOS7中,在iOS8中已被移除。

iOS8以后:UITableView中存在2个UIScrollView,一个是UITableView本身,另外一个存在于UITableView与UITableViewCell之间,类名为UITableViewWrapperView。需要注意的是,UITableViewWrapperView在iOS7中并不是一个UIScrollView。

2、仅仅设置属性是不够的&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值