首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
移动开发
> 详细
iOS学习之事件处理
时间:
2016-04-16 12:29:08
阅读:
248
评论:
0
收藏:
0
[点我收藏+]
标签:
一、事件的基本概念
1、事件概述
事件是当用户手指触击屏幕及在屏幕上移动时,系统不断发送给应用程序的对象。
系统将事件按照特定的路径传递给可以对其进行处理的对象。
在iOS汇总,一个UITouch对象表示一个触摸,一个UIEvent表示一个事件。事件对象中包含与当前多点触摸序相对应的所有触摸对象,还可以提供与特定视图或窗口相关联的触摸对象。
事件有三种:触摸事件,晃动事件,远程事件。
二、触摸的基本概念
1、触摸概述
触摸信息有时间和空间两方面,时间方面的信息称为阶段(phrase),表示触摸是否刚刚开始,是否正在移动或处于静止状态,以及何时结束——也就是手指何时从屏幕抬起。触摸信息还包括当前在视图窗口中得位置信息,以及之前的位置信息(如果有的话)。当一个手指接触屏幕时,触摸就和某个窗口或视图关联在一起,这个关联在事件的整个生命周期都会得到维护。
2、触摸时间的处理方法
在给定的触摸阶段中,如果发生新的触摸动作或已有的触摸动作发生变化,应用程序就会发
送这些消息:
当一个或多个手指
触碰屏幕时,发送touchesBegan:withEvent:消息。
当一个或多个手指
在屏幕上移动时,发送touchesMoved:withEvent:消息。
当一个或多个手指
离开屏幕时,发送touchesEnded:withEvent:消息。
三、响应者链
1、响应者链概述
响应者链是一个响应者对象的链接序列,时间或动作消息(或菜单编辑消息)依次传递。它允许响应者对象把事件处理的职责转交给其它更高层的对象。应用程序通过向上传递一个事件来查找合适的处理对象。因为点击检测视图也是一个响应者对象,应用程序在处理触摸事件时也可以利用响应链。
由多个响应者对象组成的链。
2、响应者
iOS中所有能响应事件(触摸、晃动、远程事件)的对象都是响应者。
系统定义了一个抽象的父类
UIResponder来表示响应者。其子类都是响应者。
3、检测碰撞视图
硬件检测到触摸操作,会将信息交给UIApplication,开始检测。
UIApplication->window->viewController->view->检测所有子视图
最终确认触碰位置,完成响应者链的查询过程。
图示:
4、处理触摸事件
检测到响应者后,实现touchesBegan:withEvent:等方法,即处理事件。
如果响应者没有处理事件,事件会向下传递。如果没有响应者处理,则丢弃触摸事件。
事件处理的顺序与触摸检测查询相反。
触摸的子视图->view->viewController->window->UIApplication。
5、阻断响应者链
响应者链可以被打断。无法
ionEnabled。关闭后能阻断查询过程。
userInteractionEnabled
会阻断视图检测的过程,默认不阻断
值为
NO
,从当前视图开始到所有子视图不再检测
viewB.
userInteractionEnabled
=
NO
;
6、
响应者链处理原则
点击检测视图或者第一响应者传递事件或动作消息给它的视图控制器(如果它有的话);如果没有一个视图控制器,就传递给它的父视图。
如果一个视图或者它的视图控制器不能处理这个事件或动作消息,它将传递给该视图的父视图。
在这个视图层次中的每个后续的父视图遵循上述的模式,如果它不能处理这个事件或动作消息的话。
最顶层的视图吐过不能处理这个事件或动作消息,就传递给UIWindow对象来处理。
如果UIWindow对象不能处理,就传给单件应用程序对象UIApplication如果应用程序对象也不能处理这个事件或者动作消息,将抛弃它。
四、手势
1、手势识别器概述
手势识别器是对触摸事件做了封装,手势识别器本身起到了识别作用。
手势识别器是iOS中别叫抽象的一个类,用于识别一个手势,所谓手势:
有规律的触摸。
2、手势分类:轻拍手势,长按手势,旋转手势,捏合手势,平移手势,轻扫手势,屏幕边界平移手势。
3、使用手势识别器:系统提供的手势识别器这个抽象父类我们是不会直接使用的,而是根据需求使用特定的手势识别器创建对象,系统所提供的手势类型如下:
UITapGestureRecognizer是轻拍手势识别器,能识别轻拍操作;
UILongPressGestureRecognizer是长按手势识别器,能识别长按操作;
UIRotationGestureRecognizer是旋转手势识别器,能识别旋转操作;
UIPinchGestureRecognizer是捏合手势识别器,能识别捏合操作;
UIPanGestureRecognizer是平移手势识别器,能识别拖拽操作;
UISwipeGestureRecognizer是轻扫手势识别器,能识别拖拽操作;
UIScreenEdgePanGestureRecognizer是屏幕边缘轻扫识别器。
4、创建手势识别器
创建UIxxxGestureRecognizer对象,使用initWithTarger:action:方法
配置要识别的手势的相关信息
将手势添加到某个视图上
实现手势识别器里定义的方法
5、View的transform属性
transform是view的一个重要属性,它在矩阵层面上改变view的显示状态,能实现view的缩放、旋转、平移等功能。
平移:CGAffineTransformMakeTranslation
缩放:CGAffineTransformMakeScale
旋转:CGAffineTransformMakeRotation
部分手势代码示例:
iOS学习之事件处理
标签:
原文地址:http://www.cnblogs.com/soley/p/5397922.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
关闭苹果IOS app自动更新
2021-07-29
开发一个即时通讯App
2021-07-28
iOS 跳转App Store进行评分
2021-07-26
诺基亚短信生成!太好玩了
2021-07-26
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
2021-07-26
Android系统编程入门系列之界面Activity响应丝滑的传统动画
2021-07-26
uniapp h5,app两端复制文本
2021-07-22
uni-app滚动视图容器(scroll-view)之监听上拉事件
2021-07-21
新型横向移动工具原理分析、代码分析、优缺点以及检测方案
2021-07-19
Android系统编程入门系列之界面Activity交互响应
2021-07-19
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!