通过响应者链获取view的控制器对象

在.h文件中声明一个方法

- (UIViewController *)VC;

在.m文件中实现

//获取view中的导航栏 通过响应者链来 查找

- (UIViewController *)VC {

for (UIView *next = [self superview]; next; next = next.superview) {

UIResponder *nextResponder = [next nextResponder];

if ([nextResponder isKindOfClass:[UINavigationController class]]) {

return (UINavigationController *)nextResponder;

}

}

return nil;

}

时间: 2024-11-07 11:54:47

通过响应者链获取view的控制器对象的相关文章

iOS 之 获取View所在控制器

1. UIResponder UIViewController *uvc; UIResponder* nextResponder = [self.superview.superview.superview nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { uvc = (UIViewController*)nextResponder; } 2.获取当前屏幕中present出来的viewcont

iOS响应者链

首先,当发生事件响应时,必须知道由谁来响应事件.在IOS中,由响应者链来对事件进行响应,所有事件响应的类都是UIResponder的子类,响应者链是一个由不同对象组成的层次结构,其中的每个对象将依次获得响应事件消息的机会.当发生事件时,事件首先被发送给第一响应者,第一响应者往往是事件发生的视图,也就是用户触摸屏幕的地方.事件将沿着响应者链一直向下传递,直到被接受并做出处理.一般来说,第一响应者是个视图对象或者其子类对象,当其被触摸后事件被交由它处理,如果它不处理,事件就会被传递给它的视图控制器对

获取View的截图-将View转换为Bitmap对象

开发中,有时候需要获取View的截图来做动画来达到动画流程的目的,也有其他的很多用途 /** * 将View转换为Bitmap对象 */ public class ViewToBitmapUtil { private static final String TAG = "ViewToBitmapUtil"; public static Bitmap convertViewToBitmap(View view) { view.measure(MeasureSpec.makeMeasure

触摸事件,响应者链和手势

1.触摸事件 1 #import "ViewController.h" 2 @interface ViewController () 3 @property (strong,nonatomic) UILabel *simple; 4 @end 5 6 @implementation ViewController 7 8 - (void)viewDidLoad { 9 [super viewDidLoad]; 10 // Do any additional setup after loa

iOS 事件响应者链的学习(也有叫 UI连锁链)

当发生事件响应的时候,必须知道由谁来响应事件.在iOS中,由响应链来对事件进行响应,所有的事件响应的类都是继承于UIResponder的子类,响应链是一个由不同对象组成的层次结构,其中每个对象将依次获得响应事件消息的机会 发生触摸事件后,系统将事件假如到由UIApplication管理的事件 队列  好处:遵循第一响应原则,总会优先处理队列中排在最前面的事件.(栈是先进后出 不符合业务逻辑) (1)事件传递(链) 1.传递链中时没有controller的,因为controller本身不具有大小的

事件分发与响应者链

在iOS中事件分为三类: 触摸事件:通过触摸.手势进行触发(点击,缩放等) 运动事件:通过加速器进行触发(微信摇一摇等) 远程控制事件:通过其他远程设备触发(线控耳机) 只有继承自UIResponder的类才能处理事件 下面说一下触摸事件 当用户触摸屏幕时,事件会被封装成一个event实例,包含了触摸相关信息,然后操作系统对其进行分发,由响应者类进行处理(UIResponder的子类); 简单的分发与响应过程图: 1.事件的分发 iOS系统检测到手指触摸(Touch)操作时会将其放入当前活动Ap

Cocoa Touch事件处理流程--响应者链

Cocoa Touch事件处理流程--响应者链 一.事件分类 对于IOS设备用户来说,他们操作设备的方式主要有三种:触摸屏幕.晃动设备.通过遥控设施控制设备.对应的事件类型有以下三种: 1.触屏事件(Touch Event) 2.运动事件(Motion Event) 3.远端控制事件(Remote-Control Event) 今天以触屏事件(Touch Event)为例,来说明在Cocoa Touch框架中,事件的处理流程.首先不得不先介绍响应者链这个概念: 二.响应者链(Responder

Responder一点也不神秘————iOS用户响应者链完全剖析

http://blog.csdn.net/mobanchengshuang/article/details/11858217?utm_source=tuicool&utm_medium=referral 这篇文章想跟大家分享的主旨是iOS捕获用户事件的各种情况,以及内部封装的一些特殊事件. 我们先从UIButton谈起,UIButton大家使用的太多了,他特殊的地方就在于其内置的普通Default/高亮Highlighted/选择Selected/可用Enable的几个状态(UIControlS

《从零开始学Swift》学习笔记(Day 68)——Cocoa Touch设计模式及应用之响应者链与触摸事件

原创文章,欢迎转载.转载请注明:关东升的博客 应用与用户进行交互,依赖于各种各样的事件.事件响应者对象是可以响应事件并对其进行处理的对象,响应者链是由一系列链接在一起的响应者组成的.响应者链在事件处理中是非常重要的,响应者链可以把用户事件路由给正确的对象. 响应者对象与响应链 UIResponder是所有响应者对象的基类,它不仅为事件处理,而且也为常见的响应者行为定义编程接口.UIApplication.UIView(及其子类,包括UIWindow)和UIViewController(及其子类)