iOS触摸简介和简单实现

来源:互联网 发布:sai是什么绘图软件 编辑:程序博客网 时间:2024/06/06 09:28

iOS触摸简介和简单实现

1、触摸:

代表着iOS用户交互的核心,它为用户与应用程序的交互提供了最重要的方式。触摸不只限于按钮触摸和键盘交互,可以设计和构建直接通过轻击或其他手势进行工作的应用程序。应用程序在试图类中接收、处理并响应触摸事件。

2、为什么是在视图类UIView中处理触摸事件而不是视图控制器UIViewController?

答:因为视图控制器可以拥有多个视图,所有视图都可能不同程度的使用触摸,如果视图控制器直接处理所有触摸,其响应例程必须为每个视图选择适当的响应。这样一来,代码很快会变得复杂。而将该编程保持在视图级别可简化每个实现。另外,通过视图级别的编程,可以创建完全独立的定制用户界面。

3、触摸事件传达的信息包括:

触摸发生的位置(当前位置和最近的历史位置)

触摸的阶段(触摸按下、触摸移动、触摸弹起)

触摸轻击数量(单击、双击)

触摸发生的时间(时间戳)

4、UITouch对象

触摸事件及其信息存储在UITouch对象中。当用户触摸屏幕后,就会产生相应的事件,所有相关的UITouch对象都被包装在事件中,被程序交由特定的对象来处理。

4.1、UITouch类中包含5个属性:

window:触摸产生时所处的窗口。

view:触摸产生时所处的视图。

tapCount:轻击(Tap)操作和鼠标的单击操作类似,tapCount表示短时间内轻击屏幕的次数。因此可以根据tapCount判断单击、双击或更多的轻击。

timestamp:时间戳记录了触摸事件产生或变化时的时间。单位是秒。

phase:触摸事件在屏幕上有一个周期,即触摸开始、触摸点移动、触摸结束,还有中途取消。而通过phase可以查看当前触摸事件在一个周期中所处的状态。

phase是一个枚举,包含如下信息:

UITouchPhaseBegan,             // whenever a finger touches thesurface.

   UITouchPhaseMoved,             //whenever a finger moves on the surface.

   UITouchPhaseStationary,        //whenever a finger is touching the surface but hasn't moved since the previousevent.

   UITouchPhaseEnded,             //whenever a finger leaves the surface.

   UITouchPhaseCancelled,         //whenever a touch doesn't end but we need to stop tracking (e.g. putting deviceto face)

4.2、UITouch类中包含如下成员函数:

- (CGPoint)locationInView:(UIView *)view:函数返回一个CGPoint类型的值,表示触摸在view这个视图上的位置,这里返回的位置是针对view的坐标系的。调用时传入的view参数为空的话,返回的时触摸点在整个窗口的位置。

- (CGPoint)previousLocationInView:(UIView *)view:该方法记录了前一个坐标值,函数返回也是一个CGPoint类型的值, 表示触摸在view这个视图上的位置,这里返回的位置是针对view的坐标系的。调用时传入的view参数为空的话,返回的时触摸点在整个窗口的位置。

当手指接触到屏幕,不管是单点触摸还是多点触摸,事件都会开始,直到用户所有的手指都离开屏幕。期间所有的UITouch对象都被包含在UIEvent事件对象中,由程序分发给处理者。事件记录了这个周期中所有触摸对象状态的变化。

只要屏幕被触摸,系统就会报若干个触摸的信息封装到UIEvent对象中发送给程序,由管理程序UIApplication对象将事件分发。一般来说,事件将被发给主窗口,然后传给第一响应者对象(FirstResponder)处理。

 

5、简单实现

很简单的一个视图,视图中有一个可以拖动的按钮。

工程源码路径如下:

http://download.csdn.net/detail/jjunjoe/5056882

 

原创粉丝点击