• iOS开发时获取第一响应者


    上篇中提到键盘相应时间中用到了获取当前第一响应者的方法是苹果的是有方法,无法上传到App Store,本文将介绍一种非常简单的且未用到私有API的方法来获取当前第一响应者。

    实现思路:用到的iOS API就是

    - (BOOL)sendAction:(SEL)action to:(id)target from:(id)sender forEvent:(UIEvent *)event
    

     利用该API,只要将传入的target设置为nil,则系统会自动顺着响应链查找能够响应action的响应者。我们只需让所有UIResponder的子类都响应我们自定义的action,即可知道当前第一响应者是哪个对象。

    Objective-C具体实现代码

    .h文件: UIResponder+FirstResponder.h

    #import <UIKit/UIKit.h>

     

    @interface UIResponder (FirstResponder)

     

    + (id)currentFirstResponder;  

     

    @end

     

    .m文件: UIResponder+FirstResponder.m

    #import "UIResponder+FirstResponder.h"

     

    static __weak id currentFirstResponder;

     

    @implementation UIResponder (FirstResponder)

     

    + (id)currentFirstResponder {  

        currentFirstResponder = nil;  

        [[UIApplication sharedApplication] sendAction:@selector(findFirstResponder:) to:nil from:nil forEvent:nil];  

        return currentFirstResponder;  

    }  

     

    - (void)findFirstResponder:(id)sender {  

        currentFirstResponder = self;  

    }  

     

    @end

  • 相关阅读:
    qt调用simsimi api实现小黄鸡
    [机器学习系列] k-近邻算法(K–nearest neighbors)
    Ubuntu上安装flashplayer
    关于ubuntu下qt编译显示Cannot connect creator comm socket /tmp/qt_temp.xxx/stub-socket的解决办法
    Linux下添加源的几种方法
    Ubuntu字符界面输入密码始终提示错误 login incorrect 解决办法
    boost::algorithm(字符串算法库)
    boost::assign(标准容器填充库)
    boost::format(字符串格式化库)
    C/C++内存对齐 ZZ
  • 原文地址:https://www.cnblogs.com/duzhaoquan/p/8523675.html
Copyright © 2020-2023  润新知