UIScrollView上的UIButton,既能点击UIButton,又能滑动UIScrollView,但是点击UIButton时间短的话,不会高亮
来源:互联网 发布:非农数据网址 编辑:程序博客网 时间:2024/05/01 23:32
这么看来,导致这样现象应该就是时间长短的问题,顺着这个问题想下去,就追寻到UIScrollView的touch原理,当UIScrollView接收到一个touch时,它会在一段时间(好像是150ms)内监听该touch是否移动了,假如移动了(应该有一个移动范围),则取消将touch发送到其子视图(例如UIButton),UIScrollView自身接受该touch,进行滑动。看来应该就是这段判断时间惹的祸了(这里其实我还想不明白为什么明明点击了Button,也确实触发了点击,却没有高亮状态,哪位大神知道的话请指教),那要解决问题是不是就应该把这段时间取消掉呢,不要这个判断时间,那么UIButton应该就会立即响应并产生高亮状态吧。正好UIScrollView中有一个属性叫delaysContentTouches,官方文档对它的解释是:Ifthe value of this property is YES, the scroll view delays handlingthe touch-down gesture until it can determine if scrolling is theintent. If the value is NO , the scroll view immediately callstouchesShouldBegin:withEvent:inContentView:. The default value isYES.意思就是设置为NO就不会存在那个150ms的判断时间了,直接执行后续操作。那么咱们设置为NO来试试呗。结果确实如所想那样,UIButton立即响应并高亮。
但是…..别高兴太早,虽然这个问题解决了,但是新的麻烦又产生了,螳螂捕蝉黄雀在后!你会发现UIScrollView滑动不像以前那样了,假如touchdown的那点落在UIButton上然后再滑动手指,UIScrollView不会滑动,但是UIButton仍然触发,当然,这样的结果也是应该的,你想想,设置delaysContentTouches为NO后,只要手指点在UIButton上,UIScrollView就会立即判定为这是点击UIButton,而不会再等待看手指是否移动来决定是否要滑动本身了。
那么如何解决这个问题呢?你会想,有没有什么方法可以在touch到UIbutton上并滑动时不触发UIButton而让UIScrollView自己滑动呢,强大的iOS没有让你失望,UIScrollView中有一个方法:touchesShouldCancelInCon
- UIScrollView上的UIButton,既能点击UIButton,又能滑动UIScrollView,但是点击UIButton时间短的话,不会高亮
- UIScrollview下面的UIButton不能点击的问题
- 设置UIButton点击的高亮效果
- 如何解决UIScrollView中添加UITapGestureRecognizer跟UIButton点击事
- 点击效果,给 UIButton UIView UIScrollView 加一个灰色的点击效果
- UIButton 的点击事件
- UIButton的点击状态
- UIButton UIImageView UIScrollView UIWebView
- 转UIScrollView uibutton
- 【转】UIButton 在 UIScrollView 中的 高亮延迟 和 滑动冲突
- 扩大UIButton的点击区域
- UIButton点击不灵敏的问题.
- UIButton的响应点击事件
- UIButton 无法点击的问题
- 扩大UIButton的点击范围
- IOS 高仿boss直聘---优雅使用UIButton与UIScrollView打造滑动标签
- 如何解决UIScrollView中添加UITapGestureRecognizer跟UIButton点击事件冲突
- UIButton 部分点击无效
- 在Dev的gridControl中为每一行添加一个序号
- CODE[VS]1116 四色问题
- ROS 教程之 vision : 用各种摄像头获取图像
- 单向链表基础
- lessons learned from the Qlikview loads the data from DB into qvd files
- UIScrollView上的UIButton,既能点击UIButton,又能滑动UIScrollView,但是点击UIButton时间短的话,不会高亮
- 第14周上机实践项目2——带姓名的成绩单(2)
- activity启动方式可能带来的一些bug
- JNI开发入门教程之sayHello(Xubuntu Linux OpenJDK7 Eclipse GCC)
- Failed to instantiate the default view controller for UIMainStoryboardFile 'MainStoryboard' - perhap
- 剖析MFC窗口类框架应用程序
- C++文本搜索引擎
- 禁止Android 横屏竖屏切换 .
- EL表达式个人总结