用户在使用app过程中,会产生各种各样的事件
ios 3大事件
1.触摸事件
2.加速计事件
3.远程控制事件
主要介绍触摸事件
响应者对象 --- 不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件 如UIApplication,VC, View都是
为什么继承UIResponder的对象就能处理事件, 因为UIResponder内部提供了相应的方法来处理事件
1.触摸事件
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
2.加速计事件
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
3.远程控制事件
- (void)remoteControlReceivedWithEvent:(UIEvent *)event
UIView的触摸事件处理
一根或者多根手指开始触摸view,系统会自动调用view的下面的方法
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
一根或者多根在这个view上移动
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
一根手指或多根手指离开view
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
被打断的时候
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
当用户用一根手指触摸屏幕时,就会创建一个与手指相关的uitouch对象
一个手指对应一个uitouch对象
uitouch 作用
保存着跟手指相关的信息 比如触摸位置 时间 阶段
当手指一动时 系统会更新同一个uitouch对象 使之能够一直保存该手指在的触摸位置
开发中不要用双击
uitouch属性
window view tapcount timestamp phase
事件的产生 和 传递
发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中
UIApplication会从事件队列中取出最前面事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口
第一步 找到一个最合适的视图来处理触摸事件 然后找到该视图的touch事件
如果父控件不能接受触摸事件,那么子控件就不可能接收到触摸事件