美文网首页
响应者链相关问题

响应者链相关问题

作者: 小弱鸡 | 来源:发表于2016-07-13 11:00 被阅读34次

场景:

开发中事件的传递(响应者链)相关问题是不可避免的,本文是作者在开发中所遇到的问题和解决方案的集合,希望对每个读者有用
1、 在使用MVC架构模式中,不可避免的使view和controller分离于是我们不可避免的使用在视图中找控制器的操作,贴一段一直在用的代码:

//得到此view 所在的viewController
- (UIViewController*)viewController{
    for (UIView* next = [self superview]; next; next = next.superview) {
        UIResponder* nextResponder = [next nextResponder];
        if ([nextResponder isKindOfClass:[UIViewController class]]) {
            return (UIViewController*)nextResponder;
        }
    }
    return nil;
}

2、 在ScrollView使用touchBegin方法是由于UIView的Touch方法被ScrollView拦截了,其解决方案如下:
创建UIScrollView的子类在子类中重写方法,保证事件的向下传递 。闲话不多说见代码

  #import <UIKit/UIKit.h>

  @interface UIScrollView (HAScrollView)
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
  @end

实现方法

#import "UIScrollView+HAScrollView.h"

@implementation UIScrollView (HAScrollView)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [[self nextResponder] touchesBegan:touches withEvent:event];
    [super touchesBegan:touches withEvent:event];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    [[self nextResponder] touchesMoved:touches withEvent:event];
    [super touchesMoved:touches withEvent:event];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [[self nextResponder] touchesEnded:touches withEvent:event];
    [super touchesEnded:touches withEvent:event];
}

在和在输入框中进行手写输入操作时候会出现闪退的问题,其原因是上述问题(原因没找到),可以通过jiejue

相关文章

  • 响应者链相关问题

    场景: 开发中事件的传递(响应者链)相关问题是不可避免的,本文是作者在开发中所遇到的问题和解决方案的集合,希望对每...

  • iOS 响应链

    iOS开发 - 事件传递响应链iOS 响应者链,事件的传递事件传递之响应链Cocoa Touch事件处理流程--响...

  • 【iOS小结】事件和响应者链

    之前面试问到一个响应者链的问题,结果让我很尴尬。于是,就想着写篇关于响应链的总结。当然,响应者链也包含事件、响应者...

  • UIKit之触摸、响应者链

    触摸 响应者链 //响应者链多个响应者组成的链//首先执行检测过程,信息先从UIApplication->Appd...

  • ios响应者链

    iOS 响应者链 字数418 阅读41 评论0 喜欢3 响应者链 响应者链是一个响应者的连接序列,事件或者动作消息...

  • 转载:响应者链工作原理

    响应者链 响应者链是由一个一个响应者组成的长链;响应者链定义了iOS中触摸事件的交互规则;如果hit-test检测...

  • iOS UI事件传递与响应者链

    iOS UI事件传递与响应者链 响应者链 响应者对象:继承自UIResponder的对象称之为响应者对象。UIAp...

  • Swift学习笔记Day0726

    响应者链: 当Application Kit在应用程序中构造对象时,会为每个窗口建立响应者链。响应者链中的基本对象...

  • 基于ResponderChain的事件传递

    ResponderChain对象交互方式本质 响应者链简介 Responder Chain也就是响应链,响应者链是...

  • 响应者链

    1.1 响应者链 当与某控件交互时,该控件将作为"第一响应者 (First Responder)",作为响应者链的...

网友评论

      本文标题:响应者链相关问题

      本文链接:https://www.haomeiwen.com/subject/wbvsjttx.html