background image

IOS

 

     

触摸事件监听和操作

 

  

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 事件