UIScrollView

isTracking:当有手指接触着scrollView时,是YES,否则为NO;

scrollView判断触摸事件是滚动时,要经过下面的步骤:

  • isTracking设置为YES;
  • 触摸拦截事件;
  • 一个内置的计时器开始生效,用来在极短的时间内判断手指是否移动。如果没有发生移动,判断为scrollView没有发生滚动,就将触摸时间传递给触摸的子视图上,如果子视图能够响应该触摸时间,就有子视图来处理;如果判断为发生了移动,则由scrollView来处理触摸事件,不会再传递给内部的子视图。

delaysContentTouches:

  • 默认值是YES。如果是YES,scrollView就会延迟处理触摸事件,如果没有滚动,就将触摸事件传递给子视图;如果发生滚动,就不会再传递给子视图。
  • 如果值是NO,当触摸scrollView时,会立即触发- (BOOL)touchesShouldBegin:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view,这个返回值是YES,scrollView就会将触摸事件传递给子视图;值是NO,则不会将触摸事件传递给子试图。这个方法只有在scrollView有子视图并且触摸事件发生在子视图所在的区域内才会被调用。简单滴说,这个属性可以用来设置可以设置子视图立即接受触摸事件。

canCancelContentTouches:
-默认值是YES,如果用户的触摸手势判断为不是滚动并把触摸事件传递给了子视图,之后scrollView会调用- (BOOL)touchesShouldCancelInContentView:(UIView *)view这个方法,这个方法的默认值与子视图有关,如果子视图不是UIControl,默认返回值是YES,如果子视图是UIControl,默认返回值是NO。- (BOOL)touchesShouldCancelInContentView:(UIView *)view这个方法的返回值是YES时,当手指移动了足够的距离,子视图会调用-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event然后scrollVIew会继续滚动,返回值是NO时子试图不会调用-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event,scrollView也不会发生滚动。
参考 参考

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

相关阅读更多精彩内容

友情链接更多精彩内容