`

《从零开始学Swift》学习笔记(Day 68)——Cocoa Touch设计模式及应用之响应者链与触摸事件

阅读更多

原创文章,欢迎转载。转载请注明:关东升的博客 

 

应用与用户进行交互,依赖于各种各样的事件。事件响应者对象是可以响应事件并对其进行处理的对象,响应者链是由一系列链接在一起的响应者组成的。响应者链在事件处理中是非常重要的,响应者链可以把用户事件路由给正确的对象。 

 

响应者对象与响应链

 

UIResponder是所有响应者对象的基类,它不仅为事件处理,而且也为常见的响应者行为定义编程接口。UIApplicationUIView(及其子类,包括UIWindow)和UIViewController(及其子类)都直接或间接地继承自UIResponder类。

 

  

 第一响应者是应用程序中当前负责接收触摸事件的响应者对象(通常是一个UIView对象)。UIWindow对象以消息的形式将事件发送给第一响应者,使其有机会首先处理事件。如果第一响应者没有进行处理,系统就将事件(通过消息)传递给响应者链中的下一个响应者,看看它是否可以进行处理。

 

 响应者链是一系列链接在一起的响应者对象,它允许响应者对象将处理事件的责任传递给其他更高级别的对象。随着应用程序寻找能够处理事件的对象,事件就在响应者链中向上传递。响应者链由一系列“下一个响应者”组成。

 

 1.第一响应者将事件传递给它的视图控制器(如果有的话),然后是它的父视图。

 

 2.类似地,视图层次中的每个后续视图都首先传递给它的视图控制器(如果有的话),然后是它的父视图。

 

 3.最上层的容器视图将事件传递给UIWindow对象。

 

 4UIWindow对象将事件传递给UIApplication单例对象。 

 

触摸事件

 

触摸(UITouch)对象表示屏幕上的一个触摸事件,访问触摸是通过UIEvent对象传递给事件响应者对象的。触摸对象有时间和空间两方面。

 

1.时间方面

 

时间方面信息称为阶段(phase),表示触摸是否刚刚开始、是否正在移动或处于静止状态,以及何时结束,也就是手指何时从屏幕抬起。

 

在给定的触摸阶段中,如果发生新的触摸动作或已有的触摸动作发生变化,则应用程序就会发送这些消息。

 

  • 当一个或多个手指触碰屏幕时,发送touchesBegan:withEvent:消息。

  • 当一个或多个手指在屏幕上移动时,发送touchesMoved:withEvent:消息。

  • 当一个或多个手指离开屏幕时,发送touchesEnded:withEvent:消息。

     



      

     

     

    2.空间方面

    触摸点对象还包括当前在视图或窗口中的位置信息,以及之前的位置信息(如果有的话)。下面的方法是可以获得触摸点所在窗口或视图中的位置。

func locationInView(_ view: UIView?) -> CGPoint

 

 

获得前一个触摸点所在窗口或视图中的位置信息:

 

func previousLocationInView(_ view: UIView?) -> CGPoint

 

 

 

 

 

 

 

  • 大小: 48.4 KB
  • 大小: 33.8 KB
  • 大小: 20.5 KB
分享到:
评论

相关推荐

    Swift从入门到精通视频教程下载第20章 开发iOS应用程序的基石——CocoaTouch框架.zip

    Swift编程语言以其强大的功能和易读性在iOS应用开发领域占据了一席之地,而CocoaTouch框架则是构建iOS应用程序的核心工具。本视频教程将引导您深入理解CocoaTouch,并逐步掌握开发iOS应用的关键技巧。 首先,Cocoa...

    iOS and macOS Performance Tuning Cocoa, Cocoa Touch, Objective-C, and Swift

    本书主要针对苹果的两大操作系统平台,即iOS和macOS,提供了丰富的实践经验和专业指导,帮助开发者在使用Cocoa、Cocoa Touch、Objective-C和Swift开发应用时实现最佳性能。 首先,Cocoa和Cocoa Touch是苹果为macOS...

    设计模式在Cocoa中的应用

    在Cocoa框架中,设计模式扮演着至关重要的角色,它们为开发者提供了标准的解决常见问题的方法,提高了代码的可读性和可维护性。Cocoa基于Objective-C,这门语言支持面向对象特性,如消息传递、类别和协议,使得实现...

    移动软件开发-3期(KC015) 拓展学习-Cocoa Touch.pdf

    Cocoa Touch是iOS应用开发的核心组成部分,它是Apple为移动设备设计的一个框架,主要负责处理用户交互、图形界面和应用程序的基本结构。Cocoa Touch是从Mac OS X的Cocoa框架发展而来,经过优化以适应触摸屏操作和...

    swift 与 cocoa 框架研发 源码

    Swift 与 Cocoa 框架的研发是iOS和macOS应用开发的核心,这涉及到Apple的强大的开发工具链,包括Xcode IDE、Swift编程语言以及Objective-C的Cocoa框架。本资源"Swift Development with Cocoa 1st Ed"是一个开源项目...

    swift Cocoa编程教程

    这篇“Swift Cocoa编程教程”显然是针对想要学习或提升Swift与Cocoa结合使用的开发者。 在Swift中,Cocoa主要通过Cocoa Touch(针对iOS)和Cocoa(针对macOS)两个框架体现。它们提供了UI设计、事件处理、数据管理...

    COCOA设计模式 完整版 中文版

    《COCOA设计模式 完整版 中文版》是一本专为iOS开发者深度学习COCOA框架而准备的高级进阶书籍。COCOA,全称“Cocoa Touch”,是Apple开发的用于构建iOS应用的主要框架,它包含了Objective-C和Swift编程语言中的大量...

    Swift与Cocoa框架开发-课件源文件

    4. **Model-View-Controller (MVC)**:Cocoa和Cocoa Touch都遵循MVC设计模式,这是一种将数据模型、视图和控制器分离的设计思想,有利于代码组织和维护。 5. **Auto Layout**和Size Classes:用于在不同屏幕尺寸和...

    Swift.Development.with.Cocoa.2014.12[原版]

    《Swift Development with Cocoa》是一本涵盖了使用Swift语言和Cocoa框架开发iOS和OSX应用的实践指南。本书的目标读者是那些有过编程经验但未曾接触过苹果开发者工具的开发者们。通过阅读本书,读者能够学会如何利用...

    Cocoa Touch:UIKit

    Cocoa Touch是Apple iOS开发的核心组成部分,其主要的UI构建框架就是UIKit。UIKit提供了一系列的类和接口,用于创建和管理iOS应用的用户界面、处理用户交互以及进行系统级别的任务。在iOS开发中,开发者通常会用到...

    IOS应用源码——robin-cocoa-web-resource-8f47f25.rar

    《iOS应用源码解析——深度探索robin-cocoa-web-resource-8f47f25》 在iOS开发中,源码是理解应用程序工作原理的关键。"robin-cocoa-web-resource-8f47f25"是一个专门针对iOS应用的源码库,它包含了用于构建iOS应用...

    iOS 11 Programming Fundamentals with Swift Swift, Xcode, and Cocoa Basics azw3

    iOS 11 Programming Fundamentals with Swift Swift, Xcode, and Cocoa Basics 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    IOS应用源码——netshade-Cocoa-Touch-Barcodes-dfde76f.zip

    《iOS应用源码解析:netshade-Cocoa-Touch-Barcodes-dfde76f》 在iOS开发领域,源码是学习和理解技术的关键。"netshade-Cocoa-Touch-Barcodes-dfde76f.zip"这个压缩包包含了iOS应用的源代码,专门涉及到Cocoa Touch...

    leetcode耗时-iOS-Apps:存储我迄今为止使用Swift和SwiftUI框架/CocoaTouch库编写的所有iOS应用程序的存储

    leetcode ...文件类型,然后将其转换为为应用程序设计的类。 Monshot - 应用程序存储有关人类历史上发生的每个月球任务的信息。 它显示有关任务本身以及宇航员的数据。 一切都存储为 JSON 文件。 练习乘法-

    cocoa设计模式(亲测清晰)

    《Cocoa设计模式》是一本深入探讨iOS开发中高级技术的书籍,特别关注设计模式这一核心概念。设计模式是软件工程中的重要理论,它代表了在特定情境下解决问题的成熟方法,是经验丰富的开发者们智慧的结晶。对于iOS...

    Learn Cocoa Touch for iOS

    ### 学习Cocoa Touch for iOS #### 书籍概述 本书《学习Cocoa Touch for iOS》由Jeff Kelley撰写,于2012年6月27日由Apress出版社出版。该书共有393页,ISBN号为1430242698,以PDF格式提供,文件大小约为5.36MB。...

Global site tag (gtag.js) - Google Analytics