• 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

  • 相关阅读:
    Node post请求 通常配合ajax
    Node json
    Node params和query的Get请求传参
    Node express
    java NIO FileChannel
    IO 输出 PrintStream和PrintWriter
    ByteBuffer
    分析dump
    oracle free space
    SHELL 在指定行的前/后插入指定内容
  • 原文地址:https://www.cnblogs.com/duzhaoquan/p/8523675.html
Copyright © 2020-2023  润新知