该UIResponder类定义了响应和处理事件的对象接口。它是UIView和UIApplication的超类(UIWindow)。这些类的实例有时被称为响应者对象,简单地说就是响应者。
通常有2种事件类型,触摸事件和移动事件。
处理触摸事件的主要方法
1.touchesBegan:withEvent:
2.touchesMoved:withEvent:
3.touchesEnded:withEvent:
4.touchesCancelled:withEvent:
这些方法的参数与触摸它们的事件相关联,开始触摸以及触摸位置的改变都会发生触摸事件。因此iOS允许在多点触摸中响应者分别追踪和处理触摸。只要手指触摸屏幕,滑动,从屏幕离开,都会产生一个UIEvent对象,事件包括UITouch对象
处理移动事件的主要方法
1.motionBegan:withEvent:
2.motionEnded:withEvent:
3.motionCancelled:withEvent:
另外,canPerformAction:withSender: 方法允许响应程序来验证用户界面中的命令,而 undoManager 属性返回最近的在响应链中NSUndoManager 对象。
UIEventType结构体定义了事件类型。
typedef NS_ENUM(NSInteger, UIEventType) { UIEventTypeTouches, UIEventTypeMotion, UIEventTypeRemoteControl, #ifndef SDK_HIDE_TIDE UIEventTypePresses NS_ENUM_AVAILABLE_IOS(9_0), #endif };
管理响应者链
- (nullable UIResponder*)nextResponder
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event
当开始触摸屏幕是发生。touches为事件触摸的UITouch实例的集合。event是引起事件的对象。
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event
当一根或多根手指在屏幕中移动时发生
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event
当一根或多根手指在屏幕中离开时发生
- (void)touchesCancelled:(nullable NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event
触摸取消时发生(内存吃紧)