iOS系统键盘

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

//1.

- (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;

}

//2.

- (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系统键盘)