zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    原码, 反码, 补码的基础概念和计算方法.
    QoS in RoCE
    TCP拥塞控制算法之NewReno和SACK
    intel xeon家族介绍
    Intel 处理器架构演进 转
    IP报文头详解
    高性能网络服务器编程:为什么linux下epoll是最好,Netty要比NIO.2好?
    tcp拥塞控制 tahoe reno new reno sack
    TCP/IP详解--拥塞控制 慢启动 快恢复 拥塞避免
    LTTng 简介&使用实战
  • 原文地址:https://www.cnblogs.com/duzhaoquan/p/8523675.html
Copyright © 2011-2022 走看看