事件处理以及手势

事件概述:

• 事件是当⽤户⼿指触击屏幕及在屏幕上移动时,系统不断发送给应⽤程序的对象。

• 系统将事件按照特定的路径传递给可以对其进⾏处理的对象。

• 在iOS中,⼀个UITouch对象表⽰⼀个触摸,⼀个UIEvent对象表⽰⼀个事件。事件对象中包含与当前多点触摸序列相对应的所有触摸对象,还可以提供与特定视图或窗⼝相关联的触摸象。


事件类型

触摸概述:

触摸信息有时间和空间两⽅⾯,时间⽅⾯的信息称为阶段(phrase),表⽰触摸是否刚刚开始、是否正在移动或处于静⽌状态,以及何时结束—也就是⼿指何时从屏幕抬起。触摸信息还包括当前在视图或窗⼝中的位置信息,以及之前的位置信息(如果有的话)。当⼀个⼿指接触屏幕时,触摸就和某个窗⼝或视图关联在⼀起,这个关联在事件的整个⽣命周期都会得到维护。


触摸事件阶段

触摸事件的处理方法:

• 在给定的触摸阶段中,如果发⽣新的触摸动作或已有的触摸动作发⽣变化,应⽤程序就会发送这些消息:

当⼀个或多个⼿指触碰屏幕时,发送 touchesBegan:withEvent:消息。

当⼀个或多个⼿指在屏幕上移动时,发送touchesMoves:withEvent:消息。

当⼀个或多个⼿指离开屏幕时,发送touchesEnded:withEvent:消息。

响应者链:

• 响应者链是⼀个响应者对象的连接序列,事件或动作消息(或菜单编辑消息)依次传递。它允许响应者对象把事件处理的职责转交给其它更⾼层的对象。应⽤程序通过向上传递⼀个事件来查找合适的处理对象。因为点击检测视图也是⼀个响应者对象,应⽤程序在处理触摸事件时也可以利⽤响应链。

• 由多个响应者对象组成的链。

响应者:

• iOS中所有能响应事件(触摸、晃动、远程事件)的对象都是响应者。

• 系统定义了⼀个抽象的⽗类UIResponder来表⽰响应者。其⼦类都是响应者。

检测碰撞视图:

• 硬件检测到触摸操作,会将信息交给UIApplication,开始检测。

• UIApplication -> window-> viewController -> view -> 检测所有⼦视图

• 最终确认触碰位置,完成响应者链的查询过程。

处理触摸事件:

• 检测到响应者后, 实现 touchesBegan:withEvent: 等方法, 即处理事件.

• 如果响应者没有处理事件,事件会向下传递。如果没有响应者处理,则丢弃触摸事件。

• 事件处理的顺序与触摸检测查询相反。

• 触摸的⼦视图 -> view-> viewController -> window ->UIApplication

阻断响应者链:

• 响应者链可以被打断。⽆法完成检测查询过程。

• 视图类的属性 : userInteractionEnabled。关闭后能阻断查询过程。

响应者链处理原则:

• 点击检测视图或者第⼀响应者传递事件或动作消息给它的视图控制器(如果它有的话);如果没有⼀个视图控制器,就传递给它的⽗视图。

• 如果⼀个视图或者它的视图控制器不能处理这个事件或动作消息,它将传递给该视图的⽗视图.

• 在这个视图层次中的每个后续的⽗视图遵循上述的模式,如果它不能处理这个事件或动作消息的话。

• 最顶层的视图如果不能处理这个事件或动作消息,就传递给UIWindow对象来处理。

• 如果UIWindow 对象不能处理,就传给单件应⽤程序对象UIApplication如果应⽤程序对象也不能处理这个事件或动作消息,将抛弃它。

手势

手势识别器概述:

• ⼿势识别器是对触摸事件做了封装,⼿势识别器本⾝起到了识别作⽤。

• ⼿势识别器是iOS中⽐较抽象的⼀个类,⽤于识别⼀个⼿势,所谓⼿势:有规律的触摸。


手势分类

轻拍手势  平移手势  轻扫手势  缩放手势  旋转手势  长按手势  屏幕边界平移手势等.

使用手势识别器:

系统提供的手势识别器这个抽象父类我们不会直接使用的, 而是根据需要求使用特定的手势识别器创建对象, 系统所提供的手势类型如下:

1.UITapGestureRecognizer是轻拍⼿势识别器,能识别轻拍操作

2.UILongPressGestureRecognizer是长按⼿势识别器,能识别长按操作

3.UIRotationGestureRecognizer是旋转⼿势识别器,能识别旋转操作

4.UIPinchGestureRecognizer是捏合⼿势识别器,能识别捏合操作

5.UIPanGestureRecognizer是平移⼿势识别器,能识别拖拽操作

6.UISwipeGestureRecognizer是轻扫⼿势识别器,能识别拖拽操作

7.UIScreenEdgePanGestureRecognizer是屏幕边缘轻扫识别器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容