iOS-事件处理

一.事件的基本概念

1.事件是当用户手指触击屏幕及在屏幕上移动时,系统不断发送给应用程序的对象

2.系统将事件按照特定的路径传递给可以对其进行处理的对象

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

二.触摸的基本概念

1.触摸信息有时间和空间两方面,时间方面的信息称为阶段(phrase),表示触摸是否刚刚开始,是否正在移动或处于静止状态,以及何时结束----也就是手指何时从屏幕抬起。

2.触摸信息还包括当前在视图或窗口中的位置信息,以及之前的位置信息(如果有的话)。当一个手指接触屏幕时,触摸就和某个窗口或视图关联在一起,这个关联在事件的整个生命周期都会得到维护。

1.当一个或多个手指触碰屏幕时,发送[touchesBegan : withEvent :]消息

2.当一个或多个手指在屏幕上移动时,发送[touchesMoved : withEvent :]消息

3.当有一个或多个手指离开屏幕时,发送[touchesEnded : withEvent]消息

三.响应者链

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

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

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

4.系统定义了一个抽象的父类UIResponder来表示响应者。其子类都是响应者。

检测顺序:

UIApplication ->UIWindow -> rootViewController ->viewA ->viewB

viewC ->viewD ->viewE(检测到触摸视图)

响应顺序:

和检测顺序正好相反

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

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

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

4.触摸的子视图->view ->viewController ->window ->UIApplication

响应者链处理原则:

1.点击检测视图或者第一响应者传递事件或动作消息给它的视图控制器(如果有的话),如果没有一个视图控制器,就传递给他的父视图

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

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

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

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

四.手势

1.手势识别器是对触摸事件做了封装,手势识别器本身起到了识别作用

2.手势识别器是iOS中比较抽象的一个类,用于识别一个手势,所谓手势:有规律的触摸

手势分类:

时间: 2024-10-16 11:45:58

iOS-事件处理的相关文章

《转之微信移动团队微信公众号》iOS 事件处理机制与图像渲染过程

致歉声明: Peter在开发公众号功能时触发了一个bug,导致群发错误.对此我们深表歉意,并果断开除了Peter.以下交回给正文时间: iOS 事件处理机制与图像渲染过程 iOS RunLoop都干了什么 iOS 为什么必须在主线程中操作UI 事件响应 CALayer CADisplayLink 和 NSTimer iOS 渲染过程 渲染时机 CPU 和 GPU渲染 Core Animation Facebook Pop介绍 AsyncDisplay介绍 参考文章 iOS RunLoop都干了什

iOS 事件处理机制与图像渲染过程

iOS 事件处理机制与图像渲染过程 iOS RunLoop都干了什么 iOS 为什么必须在主线程中操作UI 事件响应 CALayer CADisplayLink 和 NSTimer iOS 渲染过程 渲染时机 CPU 和 GPU渲染 Core Animation Facebook Pop介绍 AsyncDisplay介绍 参考文章 iOS RunLoop都干了什么 RunLoop是一个接收处理异步消息事件的循环,一个循环中:等待事件发生,然后将这个事件送到能处理它的地方. 如图1-1所示,描述了

iOS:事件处理机制

官方文档说明:<Event Handling Guide for iOS>,本文参考转载文章,并参照官方文档补充说明. 本篇内容将围绕iOS中事件及其传递机制进行学习和分析.在iOS中,事件分为三类: 触控事件(单点.多点触控以及各种手势操作) 传感器事件(重力.加速度传感器等) 远程控制事件(远程遥控iOS设备多媒体播放等) 这三类事件共同构成了iOS设备丰富的操作方式和使用体验,本次就首先来针对第一类事件:触控事件,进行学习和分析. Gesture Recognizers Gesture

IOS事件处理

在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件.我们称之为“响应者对象” UIApplication.UIViewController.UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件 •UIView是UIResponder的子类,可以覆盖下列4个方法处理不同的触摸事件 UIEvent可获取是哪个特定的事件 触摸.加速.触摸事件. 默认所有的UIView不支持两个手指.要设置才可以,最好不要 搞多个手指,移动时

5. IOS事件处理方式?

IOS常用事件处理机制,有如下三种方式: 1. 通过IBAction绑定将控件的特定事件绑定到控制器的指定方式,当该控件上发生此事件时,将会触发控件到的对应方法. 示例:就是拖线的方式. 2. 在程序中为UI控件的特定事件绑定事件监听器. 示例 (1) ,  注册事件:[btn addTarget:self action:@selector(onClickBtn:) forControlEvents:UIControlEventTouchUpInside];   (常用) 示例 (2),  删除

iOS - 事件处理全过程(补充)

事件处理的完整过程 1> 先将事件对象由上往下传递(由父控件传递给子控件),找到最合适的控件来处理这个事件. 2> 调用最合适控件的touches….方法 3> 如果调用了[super touches….];就会将事件顺着响应者链条往上传递,传递给上一个响应者 4> 接着就会调用上一个响应者的touches….方法 如何判断上一个响应者 1> 如果当前这个view是控制器的view,那么控制器就是上一个响应者 2> 如果当前这个view不是控制器的view,那么父控件就

iOS事件处理之七种手势

今天为大家介绍一下IOS 的七种手势,手势在开发中经常用到,所以就简单 通俗易懂的说下, 话不多说,直接看代码: // 初始化一个UIimageView UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 300, 300)]; imageView.image = [UIImage imageNamed:@"12.jpg"]; // UIImageView的用户交互是默认关闭的,

iOS 事件处理之UIResponder简介

在用户使用app过程中,会产生各种各样的事件 iOS中的事件可以分为3大类型:触摸事件.加速计事件.远程控制事件 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件.我们称之为“响应者对象” UIApplication.UIViewController.UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件 // 当手指开始触摸view // NSArray,字典,NSSet(无序) - (void)touchesBeg

&lt;转&gt;iOS 事件处理机制与图像渲染过程

原文:http://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=401383686&idx=1&sn=1613dfa8fa762a0efee4bc4af496fddf&scene=0#wechat_redirect iOS RunLoop都干了什么 RunLoop是一个接收处理异步消息事件的循环,一个循环中:等待事件发生,然后将这个事件送到能处理它的地方. 如图1-1所示,描述了一个触摸事件从操作系统层传送到应用内的main

iOS学习笔记-iOS事件处理之触摸事件

在iOS学习中,接触最多的就是触摸事件,这节主要学习一下触摸事件的简单使用. 1.iOS中的事件 2.触摸事件 2.1 触摸事件的完整处理过程: 1> 先将事件对象由上往下传递(由父控件传递给子控件), 找到最合适的控件来处理这个事件 2> 调用最合适控件的touches.....方法 3> 如果调用了[super touches...];就会将事件顺着响应者链条往上传递,传递给上一个响应者 4> 接着就会调用上一个响应者的touches.....方法 2.2 什么是响应者链条?