该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
  返回当前接收者的下一个响应者,如果没有返回nil。让响应链中下一个对象处理事件。
  UIResponder类默认会返回nil,并不会自动存储或设置下一个响应者。因此它的子类必须重写此方法以设置下一个响应者。下图是响应者链传递顺序
  
   - (BOOL)isFirstResponder
  判断接收者是否为第一响应者。返回YES则该消息接收者为第一响应者,反之不是第一响应者。
  
  - (BOOL)becomeFirstResponder
  通知接收者在其窗口中它即将成为第一响应者。默认返回YES。
 
  - (BOOL)resignFirstResponder
  解除当前接收者为第一响应者。
 
  - (BOOL)canResignFirstResponder
  判断接收者是否可以解除第一响应者。返回yes为可以,反之不可以解除。
 
  管理输入视图
  @property (nullable, nonatomic, readonly, strong) __kindof UIView *inputView
  当接收者成为第一响应者时显示的自定义视图。此属性通常用于提供一个视图以更换 UITextField 和 UITextView 对象提供的系统键盘。它为只读属性。当接收者成为第一响应者时该视图自动呈现,同样解除第一响应者时该视图应该自动消失。
 
  @property (nullable, nonatomic, readonly, strong) UIInputViewController *inputViewController
  同上。
 
  - (void)reloadInputViews
  当接收者为第一响应者时更新输入视图或子视图。
 
   响应触摸事件

  - (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

  触摸取消时发生(内存吃紧)

最新文章

  1. USACO翻译:USACO 2014 JAN三题(2)
  2. Atititi 版本管理 rc final rtm ga release 软件的生命周期中一般分4个版本
  3. Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告
  4. Python 汉字简体和繁体的相互转换
  5. Js闭包函数
  6. CSS彻底研究(3) - 浮动,定位
  7. UT源代码123
  8. 外部排序&amp;多路归并排序
  9. bzoj1071[SCOI2007]组队
  10. 【XSY3345】生成树 并查集
  11. cocoapods 安装中出的太多问题
  12. 消息队列:JMS之基本概念介绍
  13. Building Tool(Maven/Gradle)
  14. Python爬虫【一】爬虫的基本原理
  15. jquery使用post方法传值
  16. C++ const方法及对象
  17. python 算法面试题
  18. html生成缩略图来预览解决方案
  19. rest framework 的权限管理
  20. Python全栈开发之5、几种常见的排序算法以及collections模块提供的数据结构

热门文章

  1. STM32F4: Generating parallel signals with the FSMC
  2. 手把手教你使用C#操作SQLite数据库,新建数据库,创建表,插入,查询,删除,运算符,like
  3. InnoDB 与 MYISAM
  4. hdu 1042 N! 高精度运算
  5. redis for windows安装
  6. 利用MPMoviePlayerViewController 播放视频 iOS
  7. 使PropertyGrid控件的属性值可以显示多行的方法
  8. Mysql select语句设置默认值
  9. 用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局)
  10. Visual Studio 2013 智能提示功能消失解决办法