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

  • 相关阅读:
    sharepoint更新
    生成Log日志文件.NET
    sharepoint绑定
    sharepoint多表查询
    数据库导入
    sharepoint插入数据
    协方差矩阵求解算法分析
    .NET提供的加密算法概述
    掩耳盗铃之使用WebBrowser封装网页
    C#委托BeginInvoke返回值乱序问题
  • 原文地址:https://www.cnblogs.com/duzhaoquan/p/8523675.html
Copyright © 2011-2022 走看看