原创文章,欢迎转载。转载请注明:关东升的博客
应用与用户进行交互,依赖于各种各样的事件。事件响应者对象是可以响应事件并对其进行处理的对象,响应者链是由一系列链接在一起的响应者组成的。响应者链在事件处理中是非常重要的,响应者链可以把用户事件路由给正确的对象。
响应者对象与响应链
UIResponder是所有响应者对象的基类,它不仅为事件处理,而且也为常见的响应者行为定义编程接口。UIApplication、UIView(及其子类,包括UIWindow)和UIViewController(及其子类)都直接或间接地继承自UIResponder类。
第一响应者是应用程序中当前负责接收触摸事件的响应者对象(通常是一个UIView对象)。UIWindow对象以消息的形式将事件发送给第一响应者,使其有机会首先处理事件。如果第一响应者没有进行处理,系统就将事件(通过消息)传递给响应者链中的下一个响应者,看看它是否可以进行处理。
响应者链是一系列链接在一起的响应者对象,它允许响应者对象将处理事件的责任传递给其他更高级别的对象。随着应用程序寻找能够处理事件的对象,事件就在响应者链中向上传递。响应者链由一系列“下一个响应者”组成。
1.第一响应者将事件传递给它的视图控制器(如果有的话),然后是它的父视图。
2.类似地,视图层次中的每个后续视图都首先传递给它的视图控制器(如果有的话),然后是它的父视图。
3.最上层的容器视图将事件传递给UIWindow对象。
4.UIWindow对象将事件传递给UIApplication单例对象。
触摸事件
触摸(UITouch)对象表示屏幕上的一个触摸事件,访问触摸是通过UIEvent对象传递给事件响应者对象的。触摸对象有时间和空间两方面。
1.时间方面
时间方面信息称为阶段(phase),表示触摸是否刚刚开始、是否正在移动或处于静止状态,以及何时结束,也就是手指何时从屏幕抬起。
在给定的触摸阶段中,如果发生新的触摸动作或已有的触摸动作发生变化,则应用程序就会发送这些消息。
-
当一个或多个手指触碰屏幕时,发送touchesBegan:withEvent:消息。
-
当一个或多个手指在屏幕上移动时,发送touchesMoved:withEvent:消息。
-
当一个或多个手指离开屏幕时,发送touchesEnded:withEvent:消息。
2.空间方面
触摸点对象还包括当前在视图或窗口中的位置信息,以及之前的位置信息(如果有的话)。下面的方法是可以获得触摸点所在窗口或视图中的位置。
获得前一个触摸点所在窗口或视图中的位置信息:
func previousLocationInView(_ view: UIView?) -> CGPoint
相关推荐
自学视频教程
iOS 和 macOS 性能优化书。iOS and macOS Performance Tuning Cocoa, Cocoa Touch, Objective-C, and Swift
本人写的一点关于cocoa中使用到的设计模式
iOS和macOS性能优化:Cocoa、Cocoa Touch、Objective-C和Swift(英文版)
iOS 11 Programming Fundamentals with Swift Swift, Xcode, and Cocoa Basics 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
IOS应用源码——netshade-Cocoa-Touch-Barcodes-dfde76f.zip
leetcode ...文件类型,然后将其转换为为应用程序设计的类。 Monshot - 应用程序存储有关人类历史上发生的每个月球任务的信息。 它显示有关任务本身以及宇航员的数据。 一切都存储为 JSON 文件。 练习乘法-
通过阅读本书,你将学习 Swift 面向对象的概念、理解如何使用 Apple 的开发工具,以及探索 Cocoa 是如何提供 iOS 应用所需的底层功能的。
swift 与 cocoa 框架研发 https://github.com/thesecretlab/SwiftDevelopmentWithCocoa1stEd
Cocoa Touch for iPhone OS 3 (pdf 书及源代码) Join the gold rush to developing cool iPhone apps with this complete iPhone OS 3 developer’s guide. Professional developer Jiva DeVoe speaks your ...
treemapkit, Cocoa Touch for ( iphone/ipod touch/ipad ) TreemapKitTreemapKit是 Cocoa Touch的treemap实现。 你可以在 iPhone,iPod touch和iPad中显示 TreeMaps 。点击这里看一下简单的演示软件。 许可证...
iOS实例开发源码——cocoa-fluff-CoolrSwap-b590080.zip
Swift.Development.with.Cocoa.2014.12.pdf
swift Cocoa开发的经典教程, 现在这方面的资料有点少,能这样就算不错了
原版 Swift.Development.with.Cocoa.2014.12,为你在OS X或IOS平台上的开发提供帮助!
各个控件的使用描述,比如UIButton,UITableView,UITextView等等
《Cocoa设计模式》共分为5个部分,按照由浅入深、循序渐进的原则详细介绍各种设计模式在Cocoa中的应用,并且提供了丰富的代码示例,方便读者学习《Cocoa设计模式》内容。《Cocoa设计模式》最后还包含一个附录,提供...
书中应用GoF的经典设计模式,介绍了如何在代码中应用创建型模式、结构型模式和行为模式,如何设计模式以巩固应用程序,并通过设计模式实例介绍MVC在CocoaTouch框架中的工作方式。 《Objective-C编程之道:iOS设计...
Swift与Cocoa框架开发-课件源文件,SwiftDevelopmentWithCocoa1stEd
IOS 10 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics by Matt Neuburg English | ISBN: 1491970073 | 2016 | PDF | 518 pages | 7 MB Move into iOS development by getting a firm ...