1.UIResponder概念
a.在用户使用app过程中,会产生各种各样的事件,iOS中的事件可以分为3大类型:触摸事件、加速事件、远程控制事件。今天主要介绍触摸事件。
b.在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件,我们称之为“响应者对象”。
c.UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件。
d.UIResponder内部提供了以下方法来处理事件。
触摸事件
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event;
-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent *)event;
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent *)event;
-(void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent *)event;
加速计事件
-(void)motionBegan:(UIEventSubtype)motionwithEvent:(UIEvent *)event;
-(void)motionEnded:(UIEventSubtype)motionwithEvent:(UIEvent *)event;
-(void)motionCancelled:(UIEventSubtype)motionwithEvent:(UIEvent *)event;
远程控制事件
-(void)remoteControlReceivedWithEvent:(UIEvent*)event;
2.UIView的触摸事件
UIView是UIResponder的子类,可以覆盖下列4个方法处理不同的触摸事件
//一根或者多根手指开始触摸view,系统会自动调用view的下面方法
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event
//一根或者多根手指在view上移动,系统会自动调用view的下面方法(随着手指的移动,会持续调用该方法)
-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent *)event
//一根或者多根手指离开view,系统会自动调用view的下面方法
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent *)event
//触摸结束前,某个系统事件(例如电话呼入)会打断触摸过程,系统会自动调用view的下面方法
-(void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent *)event
提示:touches中存放的都是UITouch对象
3.NSSet与NSArray的区别:
NSSet:
1>无序的、不重复的;
2>通过 anyObject 来访问单个元素;
3>主要通过forin遍历;
4>好处: 效率高。
5>应用场景:
*比如重用 Cell 的时候, 从缓存池中随便获取一个就可以了, 无需按照指定顺序来获取
*当需要把数据存放到一个集合中, 然后判断集合中是否有某个对象的时候
NSArray
1> 有序的、可以有重复对象,对象的顺序是按照添加的顺序来保存的;
2> 通过下标来访问单个元素;
3> 可以通过for循环和forin来遍历;
4>好处: 有序访问。
4> 应用场景:
在绝大多数需要依赖顺序的情况下(比如 tableView 的数据源集合,在实际操作中要根据下标来获取对象)
4.补充:
a.可以通过按着option键和鼠标点击实现两点触摸屏幕;
b.UIView默认不支持多点触控multipleTouchEnabled,可在view的属性中打钩;
c.UIImageView默认不支持多点触控multipleTouchEnabled,也不支持userInteractionEnabled可在view的属性中打钩;
1432

被折叠的 条评论
为什么被折叠?



