UIScrollView之isTracking delaysContentTouches canCancelContentTouches 意义

一、bool 类型的tracking属性

表意:跟踪

当触摸scrollView的瞬间该属性值变为YES,开始跟踪用户行为,在触摸没有松开时(包括滚动或者静止),该属性一直是YES。

触摸一旦消失,该属性值为NO,scrollView为自由滚动或者静止状态。

具体事件为:

  • tracking属性变为YES
  • 触摸拦截事件
  • 一个内置的计时器开始生效,用来检测在极短的时间内手指是否发生了移动

如果在时间间隔内没有发生明显的滚动,则将触摸事件传递给触摸的subview上(如果subView可以响应这次触摸事件,则交给该控件处理)

如果在时间间隔内发生较大距离的拖动,则scrollView处理这次触摸事件,scrollView发生滚动,手指触摸下即使有可以处理此次触摸事件的内部控件,也不会将其传递给内部控件响应

二、delaysContentTouches:

默认值是YES,如果为YES,就会延迟处理这个触摸手势的意图,直到确定了在极短时间内是否发生了滚动,如果没有滚动 ,就把触摸事件传递给触摸的subview处理 (可以响应事件的控件) ,如果滚动了,则scrollView就会滚动 自身响应触摸事件

如果为NO,scrollView立马触发- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view方法 ,交给用户自己判断,此方法返回NO,则scrollView 不会将事件传递给view, 返回YES ,表示让view响应这个触摸事件。默认是返会YES

三、canCancelContentTouches:

默认值为YES, 如果为YES,当用户触摸手势已经被确定交给subview响应的时候 ,会立即调用- (BOOL)touchesShouldCancelInContentView:(UIView *)view ,交给此方法处理接下来的动作,如果此方法返回NO,则继续传递给subview,scrollView不会滚动,返回YES,则scrollView会滚动 ,subview 会取消处理这个事件 如果返回NO ,则scrollView不会滚动, subview响应这个触摸事件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容