iOS 手势中cancelsTouchesInView delaysTouchesBegan delaysTouchesEnded 三种属性的使用

简介: iOS 手势中cancelsTouchesInView delaysTouchesBegan delaysTouchesEnded 三种属性的使用

在iOS开发中,手势识别器UIGestureRecognizer有三个关键属性用于控制与触摸事件touch event的交互方式,这三个属性分别是:

1、cancelsTouchesInView
功能: 当手势识别成功时,这个属性决定是否向视图发送touchesCancelled:消息。如果设为true(默认值通常是true),则手势识别成功时,所有相关的触摸事件都会被取消,这意味着视图将不会接收到后续的触摸事件,如touchesMoved:或touchesEnded:。这有助于防止触摸事件与手势识别器同时处理同一触摸序列,从而避免冲突。
使用场景: 当你希望手势识别的结果能立即中断并替代任何正在进行的触摸处理时,应保持默认值或设置为true。
2、delaysTouchesBegan
功能: 这个属性决定了当手势可能被识别时,是否延迟发送touchesBegan:消息给视图。如果设为true,触摸事件会在一段时间内被延迟,直到手势识别器确定是否要进行处理。如果手势最终未被识别,触摸事件将正常传递给视图。这可以避免不必要的touchesBegan:调用,尤其是在手势识别较为复杂,需要一定时间判断的情况下。
使用场景: 当你的应用中存在可能与触摸事件冲突的手势识别,而又希望先给手势识别一些时间去判断是否要处理这些触摸时,应考虑设置为true。
3、delaysTouchesEnded
功能: 类似于delaysTouchesBegan,但它影响的是touchesEnded:消息的发送。当设为true时,touchesEnded:消息会被延迟发送,直到手势识别器完成其识别过程。这对于那些在触摸结束时才完全确定是否响应的手势特别有用,比如长按手势UILongPressGestureRecognizer。
使用场景: 如果你的手势识别需要基于整个触摸过程来决定是否响应,特别是在触摸结束阶段有特殊处理需求时,可以通过设置这个属性来延迟触摸结束的消息,以便手势识别器有足够时间来做出决策。
综上所述,这三个属性通过控制触摸事件与手势识别器的交互时机,帮助开发者有效管理复杂的用户交互逻辑,避免冲突,提高用户体验。在实际应用中,根据具体的交互需求合理配置这些属性,能够使应用的手势识别和触摸事件处理更加精准和高效。

目录
相关文章
|
iOS开发
iOS CAEmitterLayer 属性介绍
iOS CAEmitterLayer 属性介绍
45 0
|
3月前
|
Swift iOS开发
iOS开发-属性的内存管理
【8月更文挑战第12天】在iOS开发中,属性的内存管理至关重要,直接影响应用性能与稳定性。主要策略包括:`strong`(强引用),不维持对象生命期,可用于解除循环引用;`assign`(赋值),适用于基本数据类型及非指针对象属性;`copy`,复制对象而非引用,确保对象不变性。iOS采用引用计数管理内存,ARC(自动引用计数)自动处理引用增减,简化开发。为避免循环引用,可利用弱引用或Swift中的`[weak self]`。最佳实践包括:选择恰当的内存管理策略、减少不必要的强引用、及时释放不再使用的对象、注意block内存管理,并使用Xcode工具进行内存分析。
|
5月前
|
前端开发 iOS开发
input框设置placeholder属性在iOS中显示不完整
input框设置placeholder属性在iOS中显示不完整
69 1
|
iOS开发
iOS 渐变颜色 CGGradientCreateWithColorComponents 属性介绍
iOS 渐变颜色 CGGradientCreateWithColorComponents 属性介绍
151 0
|
存储 安全
11-iOS关联对象实现weak属性
11-iOS关联对象实现weak属性
296 0
|
iOS开发
iOS开发 - 不用copy修饰的字符串属性什么情况下不安全
iOS开发 - 不用copy修饰的字符串属性什么情况下不安全
90 0
|
安全 Android开发 iOS开发
iOS隐私安全:用户协议及隐私政策弹框(包含超链接属性、demo支持中英文切换)
iOS隐私安全:用户协议及隐私政策弹框(包含超链接属性、demo支持中英文切换)
1347 1
iOS隐私安全:用户协议及隐私政策弹框(包含超链接属性、demo支持中英文切换)
|
iOS开发
iOS - 修改readonly修饰的属性
readonly:只读属性,只生成getter方法,也就是说只能访问变量,不能修改。
iOS - 修改readonly修饰的属性
|
API 开发工具 Android开发
iOS富文本使用指南: 1、封装富文本API,采用block实现链式编程 2、 超链接属性 3、HTML字符串与富文本互转
iOS富文本使用指南: 1、封装富文本API,采用block实现链式编程 2、 超链接属性 3、HTML字符串与富文本互转
256 0
iOS富文本使用指南: 1、封装富文本API,采用block实现链式编程 2、 超链接属性 3、HTML字符串与富文本互转
|
iOS开发
iOS - Runtime 动态添加属性
我们在开发中常常使用类目Category为一些已有的类扩展功能。虽然继承也能够为已有类增加新的方法,而且相比类目更是具有增加属性的优势,但是继承毕竟是一个重量级的操作,添加不必要的继承关系无疑增加了代码的复杂度。