iOS学习之——多点触碰
来源:互联网 发布:centos输入法下载安装 编辑:程序博客网 时间:2024/06/06 00:43
一、响应者链
只要继承了UIResponder的对象就可作为事件的响应者,实际上UIControl继承了UIView,UIView又继承了UIResponder,即所有的对象都可作为事件的响应者。
当用户与某个空间交互时,该空间将作为”第一响应者(First Responder)”,第一响应者将作为响应者链的开始,该事件首先被发送给第一响应者(也就是用户触摸屏幕的控件)。事件将沿着响应者链一直向下传播,直到被某个响应者处理。
事件响应者链的典型传播路线为:
First Responder ——>First Responder的视图控制器(如果有)——>父容器(如果有)——>父容器的视图控制器(如果有)——>UIWindow ——>UIApplication ——>应用程序委托对象
如果某个事件经过上面完整的传播过程,依然没有被处理,那么该事件就会被丢弃。一般来说,上面响应者链的任何响应者处理该事件,该事件就会停止传播。
如果某个响应者”截获”了某个时间,那么该响应者要根据条件决定是否处理该事件。当响应者无法处理该事件时,则需要在处理方法中手动传递该事件。
eg:
-(void)handleTapEvent:(UIEvent *)event{ if(condition) { //处理事件 } else { [self.nextResponder handleTapEvent:event]; }}
二、响应触摸方法
UIResponder的4个方法可以让自定义控件响应用户的触碰事件:
-touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event: //当用户手指开始接触控件或窗口事件时激发该方法-touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event: //当用户手指在控件上移动时激发该方法-touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event: //当用户手指结束触碰控件时激发该方法-touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event: //当系统事件(比如内存低事件)中止了触碰事件时激发该方法
如果希望用户在控件上按下手指激发响应的事件,则可通过重写如下方法来实现:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ NSUInteger fingersNum = [touches count]; NSUInteger tapCount = [[touches anyObject] tapCount] ...}
重写这些触碰事件处理方法时,第一个NSSet类型的参数代表了用户同时触碰控件的多个手指,如果该用户用3个手指触碰了控件,那么该touches参数中将会包含3个UITouch对象。
UITouch对象代表一个触碰事件,该对象提供了一个tapCount属性,该属性用于返回用户触碰屏幕的次数,比如用户只是轻轻触碰屏幕一次,那么该属性将会返回1.如果该属性返回3,则代表用户快速触碰了3次屏幕。如果touches集合包含3个元素,而且tapCount属性返回3,就代表用户使用了3个手指触碰了3次控件。除此之外,UITouch还提供了locationInView:方法来获取该触碰时间在UIView控件中的触碰位置。
三、使用手势处理器(UIGestureRecognizer)
详见:http://blog.csdn.net/yxys01/article/details/51595260
- iOS学习之——多点触碰
- ios开启多点触控
- IOS swift多点触控
- iOS 防止多点触控
- 多点触碰开发
- 多点触碰2
- 多点触碰3
- 多点触控——helloworld
- Cocos2D-X学习12:交互功能——多点触控的实现
- Cocos2dx 3.1.1 之 多点触碰监听
- 事件处理机制之TouchListener 与 OnTouchEvent & 多点触碰
- Android多点触控之——MotionEvent(触控事件)
- cocos2d-x 3.9 多点触控之iOS监听无效(只能监听到单点触控)
- ios 模拟器如何模拟多点触控
- ios 模拟器如何模拟多点触控
- cocos2d-x开启IOS多点触控
- cocos2d-x开启IOS多点触控
- iOS学习之——iOS Animation
- MD5加密和编码
- Oracle PL/SQL退出循环
- 微信公众号开发小计
- 蒙特卡罗方法入门
- Hadoop-2.4.1源码分析--HDFS HeartBeat(心跳检测)整体结构
- iOS学习之——多点触碰
- 深度学习FPGA实现基础知识4(Mariana——腾讯深度学习平台的进展与应用)
- jdbc+mysql
- numpy计算移动平均值
- 正则表达式
- js_乱七八糟
- fflush(stdin)与fflush(stdout)
- 归纳一下:C#线程同步的几种方法 2
- 半深入理解Java属性继承