iOS - 获取系统键盘所在View

来源:互联网 发布:淘宝网惊现美女火辣 编辑:程序博客网 时间:2024/06/13 07:22

做自定义键盘可能需要用到这个,也有用更高级别的Window盖住键盘,这个在键盘view上用自定义键盘盖住原键盘,但是记得不需要的时候就把自定义键盘移除,否则在哪都是自定义键盘

代码是从Stack Overflow找到的,好用

- (UIView *)keyboardView{    UIWindow* tempWindow;    //Because we cant get access to the UIKeyboard throught the SDK we will just use UIView.    //UIKeyboard is a subclass of UIView anyways    UIView* keyboard;    NSLog(@"windows %ld", [[[UIApplication sharedApplication]windows]count]);    //Check each window in our application    for(int c = 0; c < [[[UIApplication sharedApplication] windows] count]; c ++)    {        //Get a reference of the current window        tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:c];        //Get a reference of the current view        for(int i = 0; i < [tempWindow.subviews count]; i++)        {            keyboard = [tempWindow.subviews objectAtIndex:i];            NSLog(@"view: %@, on index: %d, class: %@", [keyboard description], i, [[tempWindow.subviews objectAtIndex:i] class]);            if([[keyboard description] hasPrefix:@"(lessThen)UIKeyboard"] == YES)            {                //If we get to this point, then our UIView "keyboard" is referencing our keyboard.                return keyboard;            }        }        for(UIView* potentialKeyboard in tempWindow.subviews)            // if the real keyboard-view is found, remember it.            if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {                if([[potentialKeyboard description] hasPrefix:@"<UILayoutContainerView"] == YES)                    keyboard = potentialKeyboard;            }            else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) {                if([[potentialKeyboard description] hasPrefix:@"<UIPeripheralHost"] == YES)                    keyboard = potentialKeyboard;            }            else {                if([[potentialKeyboard description] hasPrefix:@"<UIKeyboard"] == YES)                    keyboard = potentialKeyboard;            }    }    return keyboard;}
0 0