UIButton的高亮状态延迟问题

UIScrollView上的UIButton点击的时候没有高亮状态,但是确实触发了点击事件,不过这样会造成一个假象,给用户看来UIButton没有被点击的感觉。 但是要是长时间点击的话,则会高亮。于是我发现,导致这种现象应该就是时间长短的问题。顺着这个问题想下去,就追寻到UIScrollViewtouch原理,UIScrollView有一个delaysContentTouches的属性


解决办法
//delaysContentTouches 默认值为YES,即UIScrollView会在接受到手势是延迟150ms来判断该手势是否能触发UIScrollView的滑动事件;
//反之值为NO时,UIScrollView会立马将接受到的手势分发到子视图上。即button在点击时会立即呈现高亮状态
- (BOOL)delaysContentTouches {

    return NO;
}


/**
 delaysContentTouches设置为NO是远远不够的,因为这样的话你想要拖动UIScrollView而起点落在其它有手势识别的视图上是会拖不动的。 于是我们要重载touchesShouldCancelInContentView,此方法决定手势是否取消传递到subView上,拖动UIScrollView时触发。
 */
- (BOOL)touchesShouldCancelInContentView:(UIView *)view {
    // 如果是button, 则点击button的时候不影响滑动
    if ([view isKindOfClass:[UIButton class]]) {
        return YES;
    }
    return [super touchesShouldCancelInContentView:view];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值