在IOS开发中会遇到各种操作事件,通过程序可以对这些事件做出响应。
首先,当发生事件响应时,必须知道由谁来响应事件。在IOS中,由响应者链来对事件进行响应,所有事件响应的类都是UIResponder的子类,响应者链是一个由不同对象组成的层次结构,其中的每个对象将依次获得响应事件消息的机会。当发生事件时,事件首先被发送给第一响应者,第一响应者往往是事件发生的视图,也就是用户触摸屏幕的地方。事件将沿着响应者链一直向下传递,直到被接受并做出处理
路线图如 First Responser——>The Window——>The Application——>App Delegate
正常的响应者链流程经常被委托(delegation)打断,一个对象(通常是视图)可能将响应工作委托给另一个对象来完成(通常是视图控制器ViewController),这就是为什么做事件响应时在ViewController中必须实现相应协议来实现事件委托。
1.触摸和事件
——UITouch
UITouch对象是一个手指接触到屏幕并在屏幕上移动或离开屏幕时创建的。它有几个属性和实例方法:
phase:属性,返回一个阶段常量,指出触摸开始、继续、结束或被取消,分别对应UITouchPhaseBegan、UITouchPhaseMoved等
tapCount:属性,轻按屏幕的次数
timeStamp:属性,触摸发生的时间
view:属性,触摸始于那个视图
window:属性,触摸始于哪个窗口
lacationInView:方法,触摸在指定视图中的当前位置
previousLocationView:方法,触摸在指定视图中的前一个位置
——UIEvent
UIEvent对象包含一组相关的UITouch对象,由UITouch对象组成UIEvent对象,可以理解成一个完整的触摸操作是一个UIEvent,而这一系列完整操作中的每个点就是UITouch(按下、移动、离开)。
UIEvent的作用是提供相关触摸操作的列表,如果要获取在屏幕上触摸的手势,可以使用该对象,这一些列操作都存储在Foundation框架中的NSSet对象中。
——UIResponder
UIResponser提供四个事件响应的方法,这些方法是事件捕捉的核心。这些方法都接收两个参数,一个是NSSet(包含指定阶段的触摸)和一个UIEvent。
touchesBegan:withEvent: 在手指触摸屏幕时报告UITouchPhaseBegan事件
touchesMoved:withEvent: 在手指在屏幕上移动时报告UITouchPhaseMoved事件
touchesEnded:withEvent: 在手指离开屏幕时报告UITouchPhaseEnded事件
touchesCancelled:withEvent: 在因接听电话或其他因素导致取消触摸时报告UITouchPhaseCancelled事件
定义一个方法用来响应触摸事件:
-(void)manageTouches:(NSSet *)touches
{
for (UITouch *touch in touches) {
switch (touch.phase) {
caseUITouchPhaseBegan:
NSLog(@"began...");
break;
caseUITouchPhaseMoved:
NSLog(@"move...");
break;
caseUITouchPhaseEnded:
NSLog(@"end...");
break;
default:
break;
}
}
}
然后在ViewController中响应该方法:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
关于多点触摸,可以参考Apple IOS SDK开发文档,多点触摸在游戏及其一些新奇的应用中比较多,在常规的应用开发中还是比较少的用到多点触摸。
下次将介绍UIControl对象
分享到:
相关推荐
在讨论iOS学习笔记之前,首先应当明确iOS开发的核心要素。iOS是苹果公司为其移动设备设计的操作系统,与之对应的开发语言主要是Objective-C以及近年来流行的Swift。Objective-C是一种成熟稳定的语言,它以C语言为...
总的来说,"ios学习笔记---simpleping"为初学者提供了一个了解和实践网络连通性检测的好起点。通过这个小的demo,你可以掌握如何使用SimplePing类进行ping操作,理解网络通信的基本原理,并且能够将这个功能集成到...
总的来说,iOS学习笔记涵盖了UI设计和交互的核心元素,对于想要深入iOS开发的初学者而言,这些都是必须掌握的基本技能。通过学习这些内容,开发者能够创建出功能丰富且用户体验良好的应用程序。继续深入学习,还会...
这篇“ios学习笔记之CKCalendar汉化”主要探讨了如何对这个库进行汉化处理,使其适应中文环境。 CKCalendar是由Chris Keathley开发的,它提供了一个类似于Apple原生日历应用的界面,具有自定义事件、多视图模式(如...
本资源包含iOS学习UI部分的代码和笔记,内容详细,旨在帮助开发者深入理解并熟练掌握iOS UI的开发技巧。下面将分别介绍压缩包中涉及的几个关键知识点。 1. UIImageView:UIImageView是用来展示图片的控件,常用于...
- **点击 TextField 外的地方回收键盘**: 可以通过监听触摸事件并在触摸视图之外的区域时隐藏键盘。 - **键盘覆盖输入框**: 通过监听键盘的显示通知来调整视图的位置,避免键盘遮挡输入框。 #### 7. 表格视图 - **...
这份"iOS史上最全的OC笔记"无疑是学习OC语言的重要参考资料。以下是对笔记内容的详细解读: 1. **基础概念**:OC是C语言的超集,它引入了消息传递机制和动态类型,使得代码更具灵活性。笔记会详细解释类、对象、...
本学习笔记将深入探讨如何在Cocos2D-X中处理触屏事件,让游戏能够响应用户的触摸操作。 首先,我们要了解Cocos2D-X中的触摸事件处理机制。在Cocos2D-X中,触屏事件主要通过`Touch`类和`TouchEvent`类来实现。`Touch...
本压缩包提供的学习资料涵盖了OC语言的基础到高级特性,结合代码实例和详细笔记,是iOS开发者深入理解OC语言的宝贵资源。 一、Objective-C基础 Objective-C是C语言的超集,它引入了面向对象的概念,如类、对象、...
在本“ios学习笔记二--电影网”的教程中,我们将深入探讨如何使用Node.js和Express框架构建一个简单的在线电影数据库。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它使得开发者能够在服务器端使用...
本笔记将聚焦于“项目三”,这是一个典型的iOS应用程序,包含下拉刷新和上拉加载功能。这两个特性是现代移动应用不可或缺的部分,它们提升了用户体验,使得用户可以无缝地获取新数据。 下拉刷新(Pull-to-Refresh)...
代码中是JSPatch学习笔记的UI基础部分,其中包括以下内容: 1. 项目环境配置 2. 变量 * 局部变量 * 全局变量 * 使用OC中的枚举类型 `Objective-C 里的常量不能直接在 JS 上使用,可以直接在 JS 上用具体值代替,...
7. **事件处理**:`UIScrollView`提供了几个关键的事件,如`ValueChanged`、`DeceleratingEnded`等,开发者可以通过监听这些事件来实现自定义的行为,比如加载更多内容。 8. **性能优化**:由于`UIScrollView`可能...
8. **学习资源**: 从文件名可以看出,有一些学习资源如博客文章和教程可以帮助开发者深入理解iOS手势编程,包括张智清的“iphone的手势与触摸编程学习笔记”以及CSDN和DEVDIV上的相关博客文章。 通过掌握以上知识点...
开发者可以通过这些示例来学习如何配置和操作插件,以满足特定的需求。 3. **src**:源代码目录,包含了插件的核心JavaScript文件。这些文件通常以.js为扩展名,是插件功能实现的关键。开发者如果想要进行二次开发...
本学习笔记将深入探讨cocos2d-x中的触摸事件处理机制,以及如何在项目中有效地利用它们。 首先,cocos2d-x是一个跨平台的2D游戏开发框架,它支持多种操作系统,包括iOS、Android、Windows等。在这些平台上,触摸...
在本文中,我们将深入探讨 .NET(特别是 .NET Maui)框架下的CPF框架...通过阅读“dotnet 学习 CPF 框架笔记 了解 X11 里如何获取触摸信息.md”这份文档,你可以找到更详细的操作指南和实例代码,进一步提升你的技能。
这个“React Native基础学习笔记”很可能是对这一跨平台开发技术的详细讲解和实践经验的汇总。React Native的核心理念是“Learn once, write anywhere”,即开发者只需掌握一次React的语法和概念,就能在iOS和...
该压缩包文件“IOS应用源码Demo-录音笔记for ipad(录完上传到dropbox)-毕设学习.zip”提供了一个iOS应用的源代码示例,特别适合那些正在进行毕业设计或者想深入理解iOS应用程序开发的学生。这个应用的核心功能是...