`
jishublog
  • 浏览: 881495 次
文章分类
社区版块
存档分类
最新评论

响应者对象

 
阅读更多


响应者对象:

  • 响应者对象是一个能接收并处理时间的对象,UIResponser 是所有响应者对象的基类
  • 该基类定义了一系列事件处理的相关方法,如触摸事件,button点击事件等
  • UIApplication,UIView,UIViewController 都是继承自 UIResponser,所有这些类的实例都是响应者对象
  • 如果 hit-test 视图不处理收到的事件消息,UIKit 则将事件转发到响应者链的下一个响应者,看其能否对该消息进行处理

触摸事件的处理:

UIView 是 UIResponser 的子类,可以覆盖下列4个方法处理不同的触摸事件

  • - (void)touchesBegan:(NSSet *)toucheswithEvent:(UIEvent *)event

    一根或者多根手指开始触摸屏幕
  • -(void)touchesMoved:(NSSet *)toucheswithEvent:(UIEvent *)event

    一根或者多根手指在屏幕上移动(随着手指的移动,会持续调用该方法)
  • -(void)touchesEnded:(NSSet *)toucheswithEvent:(UIEvent *)event

    一根或多根手指离开屏幕
  • -(void)touchesCancelled:(NSSet *)toucheswithEvent:(UIEvent *)event

    在触摸操作结束前,某个系统事件(例如有电话打进来)打断了触摸过程
由此,,我想到,之前点击屏幕空白处隐藏键盘是通过将view的基类修改为UIControl,然后实现View的Touch Up Inside事件实现的,,同样原理,可以直接将隐藏键盘的代码写在touch事件里应该也可以同样实现键盘隐藏的效果。


触摸事件的处理

  • 上述的4个方法都有个 UIEvent 的参数,通过 UIEvent 可以得到事件的类型和产生时间,以及当前处于活动状态的所有触摸操作,但是,通常会使用UITouch 对象而不是 UIEvent 对象来处理触摸事件
  • 当用户触摸屏幕时,系统会创建一个 UITouch 实例,并将该对象和触摸屏幕的那根手指关联。UITouch 保存着手指在屏幕上得触摸位置,当手指移动时,系统会更新同一个UITouch 对象(而不是去创建另外的多个UITouch对象),使之能够一直保存该手指在屏幕上得当前位置,当手指离开屏幕时,系统会取消响应的UITouch对象
  • UITouch 对象还会保存一些其他信息,比如,手指的前一个位置、手指按下屏幕的次数(tapCount,可以用来判断单击还是双击事件)
  • touches参数返回的是一个NSSet * 对象,之所以是NSSet * 对象是因为多点触摸的需要(单点触摸就不需要返回一个集合对象了),默认是不支持多点触摸的,要把视图的multipleTouchEnable 属性设置为YES ,通过touches.count可以验证多点触摸。





分享到:
评论

相关推荐

    swift-iOS开发-事件传递与响应者链中的hitTest方法和pointInside方法

    在iOS中,事件响应者链是由一系列响应者对象构成的,它们按照特定顺序接收并处理用户事件,如触摸、按键等。这些响应者对象通常是UI控件,如UIButton、UILabel等,它们继承自UIResponder类。当用户与屏幕互动时,...

    响应者链应用举例

    响应者链是iOS开发中的一个核心概念,它定义了用户事件如何在应用程序的不同对象之间传递,从而实现用户交互。在iOS应用中,当用户与屏幕上的某个视图进行交互时,比如点击或滑动,系统会通过响应者链来找到处理这个...

    移动软件开发-3期(KC015) 事件与手势识别 教学设计.doc

    UIViewController和UIView都是响应者对象,它们可以接收到并处理来自UIEvent的事件。响应者链条是一个事件传递机制,当事件发生时,会从第一响应者开始,如果当前响应者不处理,事件会沿着响应者链条向上层传递,...

    hitTest 与pointInside 方法的应用

    响应者链是由一系列响应者对象(如UIView、UIViewController等)组成的链式结构,用于传递和处理用户事件。当用户触摸屏幕时,事件会从UIWindow开始,通过这个链传递,直到找到第一个愿意并能够处理该事件的响应者。...

    IOS核心课程

    6. **响应者链**:iOS中的响应者对象基于`UIResponder`类,它定义了处理事件的基本方法。响应者链按照特定顺序传递事件,从最具体的视图到视图控制器,再到其他响应者。`touchesBegan:withEvent:`, `touchesMoved:...

    第3章 创建你的第一个iPhone应用程序.pdf

    向外委托任务的对象通常是一个响应者对象—即继承自 NSResponder 的对象—负责响应用户事件。委托则是受托进行事件的用户界面控制,或者至少根据应用程序的具体需要对事件进行解释的对象。为了更好地理解委托的价值...

    3.2.4触屏响应对象链表与点击测试源码

    在iOS开发中,UIResponder是所有能够接收和处理用户交互的对象的基类,它构建了一个响应者链(Responder Chain),这是iOS系统处理用户事件的核心机制。"3.2.4 触屏响应对象链表与点击测试"的主题,旨在探讨这个机制...

    iOS触摸和简单实现

    响应者对象(如`UIView`和`UIViewController`)可以接收到事件并做出响应。如果视图不处理事件,事件会沿着响应者链传递给它的父视图,直至到达窗口(`UIWindow`),如果仍然没有响应,则事件会被丢弃。 4. **...

    ios触摸情况

    因此,开发者可以在任何响应者对象中处理触摸事件,实现灵活的事件处理逻辑。 6. Gesture Recognizer的协调 当多个手势识别器同时存在时,系统会进行协调,确保不会发生冲突。开发者可以通过设置...

    CalculadoraMental:在游戏中使用嵌套的uma序列,然后在响应者中进行重新排序

    "CalculadoraMental"项目是一个很好的实例,它展示了如何在Java环境中创建一个游戏,其中涉及到嵌套的序列处理以及响应者对象的重新排序。在这个项目中,我们将深入探讨这两个核心概念。 首先,嵌套序列是指在一个...

    IOS 开发之触摸事件详细介绍

    UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件。 UIResponder内部提供了以下方法来处理事件 触摸事件(对应Android的action_down、action_move、...

    iOS 事件传递与响应链原理

    目录一 iOS中的事件1 事件的产生和类型2 响应者对象3 UIview和CALayer二 事件传递和响应机制1 事件的传递2 系统实现3 视图的响应三 事件和runloop 一 iOS中的事件 1 事件的产生和类型 用户对iOS设备进行了一些操作, ...

    iOS 中事件的响应链和传递链

    UIApplication、UIViewController、UIWindow和所有继承自UIView的类都是响应者对象,它们都有能力接收和处理事件。事件的处理主要通过以下两个方法实现: 1. `- (nullable UIView *)hitTest:(CGPoint)point ...

    MockServer:创建一个伪造的服务器以进行针对的单元测试

    您为服务器提供了一个可选端口来运行,以及一个响应者对象,该对象负责从端口获取一些输入并提供一些输出以发送回去。 默认的响应者类通过对输入进行模式匹配来工作,并接受一组预定义的响应。 响应由一个数组组成...

    iOS中长按调出菜单组件UIMenuController的使用实例

    UIMenuController的工作原理是与视图及其响应链紧密关联的,它的展现和交互都依赖于视图及其响应者对象。 首先,要使用UIMenuController,你需要确保视图能够成为第一响应者。在你的UIViewController或其子类中,你...

    swift-iOS界面刷新时保持UITextFieldUITextViewUISearchBar响应

    在iOS中,所有的交互事件都会沿着响应者链传递,直到找到一个可以处理该事件的对象。UITextField、UITextView和UISearchBar都是UIResponder的子类,它们可以接收并处理触摸事件。当用户点击输入框时,系统会设置该...

    基于面向对象winfrom开发

    4. **多态**:多态允许不同对象对同一消息做出不同的响应。在WinForms中,控件的事件处理程序就是多态的体现,尽管所有控件都继承自同一个基类,但每个控件可以有自己特定的事件处理方式。 5. **属性与方法**:在类...

    C#基于面向对象的计算器源代码,学习面向对象的好资料

    4. 多态:多态是指同一消息可以被不同类型的对象响应,提供了灵活性。在这个项目中,可能会有不同类型的计算器(基础版和高级版),它们都响应相同的计算方法,但实现可能不同。 5. 构造函数:构造函数是类的一个...

    面向对象的系统分析与设计 课件+课后答案

    - 多态:多态允许不同类型的对象对同一消息作出不同的响应,提供了更大的灵活性。 2. **系统分析**: - 需求收集:了解用户需求,分析业务流程,制定需求规格说明书。 - 数据流图(DFD):用于描述系统中数据的...

    面向对象MP3模拟实验

    这个实验主要关注的是观察者模式的应用,这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 首先,我们需要理解观察者模式的基本...

Global site tag (gtag.js) - Google Analytics