美文网首页iOS学习笔记iOS高阶UI相关iOS Developer
iOS 获取界面上键盘UIKeyboard方法

iOS 获取界面上键盘UIKeyboard方法

作者: 朱_源浩 | 来源:发表于2016-07-07 23:10 被阅读877次

    正常情况下我们对iOS系统键盘的使用仅限于让其显示或者隐藏,不会有需要获取到它的对象,仅当有一种情况,即是当我们需要在界面上添加一些元素,并且希望这些元素能够不被键盘挡住。
    这种情况下我们需要找到当前键盘所在的Window,并将元素添加到这个Window上,如此一来,我们先要找到键盘的实例对象,它是UIView的子类对象,我们只需要调用其window方法就能找到包含了键盘的UIWindow对象,就可以进行元素的添加了。具体方法如下:

    - (UIView *)findKeyboard
    {
        UIView *keyboardView = nil;
        NSArray *windows = [[UIApplication sharedApplication] windows];
        for (UIWindow *window in [windows reverseObjectEnumerator])//逆序效率更高,因为键盘总在上方
        {
            keyboardView = [self findKeyboardInView:window];
            if (keyboardView)
            {
                return keyboardView;
            }
        }
        return nil;
    }
    - (UIView *)findKeyboardInView:(UIView *)view
    {    
        for (UIView *subView in [view subviews])
        {
            if (strstr(object_getClassName(subView), "UIKeyboard"))
            {
                return subView;
            }
            else
            {
                UIView *tempView = [FTEView findKeyboardInView:subView];
                if (tempView)
                {
                    return tempView;
                }
            }
        }
        return nil;
    }
    

    相关文章

      网友评论

        本文标题:iOS 获取界面上键盘UIKeyboard方法

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