iOS 获取界面上键盘UIKeyboard方法

正常情况下我们对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方法)