美文网首页ios 知识点iOS
UIScrollView大概是如何实现的,它是如何捕捉、响应手势

UIScrollView大概是如何实现的,它是如何捕捉、响应手势

作者: iOS猿_员 | 来源:发表于2019-04-01 20:47 被阅读102次

    原文:iOS面试题大全

    UIScrollView在滚动过程当中,其实是在修改原点坐标。当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器。假如在计时器到点后没有发生手指移动事件,那么 scroll view 发送 tracking events 到被点击的 subview。假如在计时器到点前发生了移动事件,那么 scroll view 取消 tracking 自己发生滚动。

    首先了解下UIScrollView对于touch事件的接收处理原理:

    • UIScrollView应该是重载了hitTest 方法,并总会返回itself 。所以所有的touch 事件都会进入到它自己里面去了。内部的touch事件检测到这个事件是不是和自己相关的,或者处理或者除递给内部的view。
    • 为了检测touch是处理还是传递,UIScrollView当touch发生时会生成一个timer。
      • 如果150ms内touch未产生移动,它就把这个事件传递给内部view
      • 如果150ms内touch产生移动,开始scrolling,不会传递给内部的view。(例如, 当你touch一个table时候,直接scrolling,你touch的那行永远不会highlight。)
      • 如果150ms内touch未产生移动并且UIScrollView开始传递内部的view事件,但是移动足够远的话,且canCancelContentTouches = YES,UIScrollView会调用touchesCancelled方法,cancel掉内部view的事件响应,并开始scrolling。(例如, 当你touch一个table, 停止了一会,然后开始scrolling,那一行就首先被highlight,但是随后就不在高亮了)

    相关文章

      网友评论

        本文标题:UIScrollView大概是如何实现的,它是如何捕捉、响应手势

        本文链接:https://www.haomeiwen.com/subject/ljbbbqtx.html