年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3780|回复: 0

解决ios7按钮高亮延时问题

[复制链接]
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

    发表于 2014-8-9 21:49:56 | 显示全部楼层 |阅读模式
    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时设置该属性
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-4-29 16:32 , Processed in 0.043780 second(s), 19 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表