IOS事件传递和处理中的细节问题

1. 事件处理分两步:

1)寻找合适的相应对象,这个时候是从父控件到子控件的;

2)对事件进行处理 由子空间到父控件

注意点:如果连个视图是同级的关系,那么先加到View上的视图是后相应的(如果利用StroyBoard添加View,也是后先加上的后响应)。此时可以重写父类的Point:inside 和 Hit:test方法来试验

 1 -(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
 2 {
 3
 4
 5     UIView * resultView = [super hitTest:point withEvent:event];
 6
 7     NSLog(@"%s",__func__);
 8     return resultView;
 9
10 }
11 -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
12 {
13
14     NSLog(@"%s",__func__);
15     NSLog(@"Red==%d",[super pointInside:point withEvent:event]);
16 //    return [super pointInside:point withEvent:event];
17     return NO;
18
19 }

这样就可以看到如果是绿色的view先添加,那么会先调用红色的point Inside方法,如果这个时候把红色View上的所有View都重写这个方法,并且返回YES,那么绿色View的touch事件就不会被接收了,这个时候就相当于把事件强制接收了。注意在实际开发中一般不这样写,一般重写这个pointInside方法是为了避开子控件而让父控件去响应touch事件,这时返回NO,如果没有这样的需求就不必重写这个方法,如果真需要重写就返回父类的[super pointInside:point withEvent:event];

				
时间: 2024-11-05 14:46:24

IOS事件传递和处理中的细节问题的相关文章

IOS事件传递及响应过程

IOS事件传递及响应过程 –>事件到来 –>事件分发 –>事件响应 事件(Events) 1.触摸事件(Touch Events)(单点触摸.多点触摸及各种手势) 2.晃动事件(Motion Events) (重力.加速度等传感器) 3.远程控制事件(Remote-Control Events) (线控耳机.airplay) 事件分发(Event Delivery) 触摸事件:触摸->硬件中断->UIKit封装成UIEvent对象(针对触摸事件)-> 当前运行的应用程序

iOS 事件传递及响应过程

iOS 事件传递及响应过程 -->>事件到来-->>事件分发 -->>事件响应 事件( Events) 官方文档( Events(iOS)) 是这样描述的: Users manipulate their iOS devices in a number of ways, such as touching the screen or shaking the device. iOS interprets when and how a user is manipulating

iOS 事件传递响应链

iOS中加载的时候会先执行main函数 int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } 根据main函数的参数加载UIApplication->AppDelegate->UIWindow->UIViewController->superView-&g

iOS事件机制(一)

iOS事件机制(一) DEC 7TH, 2013 运用的前提是掌握掌握的本质是理解 本篇内容将围绕iOS中事件及其传递机制进行学习和分析.在iOS中,事件分为三类: 触控事件(单点.多点触控以及各种手势操作) 传感器事件(重力.加速度传感器等) 远程控制事件(远程遥控iOS设备多媒体播放等) 这三类事件共同构成了iOS设备丰富的操作方式和使用体验,本次就首先来针对第一类事件:触控事件,进行学习和分析. Gesture Recognizers Gesture Recognizers是一类手势识别器

iOS中的事件传递和响应者链条

iOS中的事件传递和响应者链条 本文转自:http://www.linuxidc.com/Linux/2015-08/121270.htm 首先我们来看看ios中事件的产生和传递过程 1.发生触摸事件后,系统会将事件加入到一个由UIApplication管理的队列事件中来 2.UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常会发发送事件给应用程序的主窗口 3.主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件 4.找到合适的视图控件后,就会调用视图

iOS中的事件传递和响应者链

首先我们来看看iOS中事件的产生和传递过程: 1.发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的队列事件中 2.UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常会先发送事件给应用程序的主窗口(keyWindow) 3.主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件 4.找到合适的视图控件后,就会调用视图控件的touches方法来作事件的具体处理:touchesBegin... touchesMoved...touch

iOS开发中的事件处理(二)-事件传递,响应者链条-

转载请注明出处:http://blog.csdn.net/whjForWork/article/details/44926833 事件处理的事件传递 简介: 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件 队列中,UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(keyWindow) UIView不接受触摸事件的三种情况: 不接收用户交互 userInteractionEnabled = NO

iOS开发 - 事件传递响应链

一.序言 当我们在使用微信等工具,点击扫一扫,就能打开二维码扫描视图.在我们点击屏幕的时候,iphone OS获取到了用户进行了"单击"这一行为,操作系统把包含这些点击事件的信息包装成UITouch和UIEvent形式的实例,然后找到当前运行的程序,逐级寻找能够响应这个事件的对象,直到没有响应者响应.这一寻找的过程,被称作事件的响应链,如下图所示,不用的响应者以链式的方式寻找. 事件响应链: 二.响应者 在iOS中,能够响应事件的对象都是UIResponder的子类对象.UIRespo

iOS开发UI篇—事件传递

iOS开发UI篇—事件传递 一.事件的产生和传递 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中 UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(keyWindow) 主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件 找到合适的视图控件后,就会调用视图控件的touches方法来作具体的事件处理 touchesBegan… touchesMoved… touchedEnded…