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

响应者对象

 
阅读更多


响应者对象:

  • 响应者对象是一个能接收并处理时间的对象,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可以验证多点触摸。





分享到:
评论

相关推荐

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

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

    IOS核心课程

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

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

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

    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或其子类中,你...

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

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

    面向对象数据库系统讲义

    本讲义旨在深入探讨这一主题,帮助学习者理解并掌握面向对象数据库系统的本质和应用。 一、面向对象数据库系统概述 面向对象数据库系统(Object-Oriented Database System,简称OODBMS)是一种存储和管理对象的数据...

    面向对象对象程序设计_专升本

    多态是OOP的最后一个主要特性,它允许不同类型的对象对同一消息作出不同的响应。这意味着在编程时可以使用父类的引用指向子类的对象,从而实现动态绑定。这增强了代码的灵活性和可扩展性,使得程序能更好地适应未来...

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

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

    面向对象MP3模拟实验

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

    解析iOS开发中的FirstResponder第一响应对象

    主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下

    面向对象程序设计教案

    4. **多态**:多态允许不同类的对象对同一消息做出不同的响应。这种特性使得代码更加灵活,可以处理多种类型的对象而无需知道它们的具体类型。 5. **构造函数与析构函数**:构造函数用于初始化新创建的对象,而析构...

    面向对象的软件工程:构建复杂且多变的系统

    6. **设计模式**:在面向对象软件工程中,设计模式是解决常见问题的成熟解决方案,如工厂模式、单例模式、观察者模式等。它们为复杂系统的设计提供了标准的、可复用的结构和行为模式。 7. **UML(统一建模语言)**...

    面向对象分析与设计

    8. **设计模式**:在面向对象设计中,设计模式是解决常见问题的成熟方案,如单例模式、工厂模式、观察者模式等,它们提供了在特定情境下的最佳实践。 9. **UML统一建模语言**:UML是面向对象分析与设计中的重要工具...

    C++面向对象编程课后题答案,清华大学

    消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以不响应。 方法是在面向对象程序设计中,要求某一对象作某一操作时,就向该对象发送一个响应的消息,当对象接收到发向它的消息时,就调用有关的方法,...

    面向对象技术引论,面向对象技术引论课件,面向对象技术引论课件,

    多态则允许不同对象对同一消息做出不同的响应,提供了灵活性和扩展性。 在C++中,类是实现面向对象的关键。类定义了一组相关的属性(数据成员)和行为(成员函数),并可以创建该类的实例,即对象。类的声明包括...

    面向对象的软件测试技术概述.pptx

    测试中,我们需要关注消息发送的时机、接收者的正确响应以及消息参数的正确性。 接口定义了一组公共行为规范,是对象对外提供服务的约定。接口有助于实现解耦,提高代码的可维护性和可扩展性。在测试时,接口的正确...

Global site tag (gtag.js) - Google Analytics