Skip to content

Instantly share code, notes, and snippets.

@Kirow
Created February 17, 2016 08:56
Show Gist options
  • Save Kirow/f439ebea719e32c6dc4f to your computer and use it in GitHub Desktop.
Save Kirow/f439ebea719e32c6dc4f to your computer and use it in GitHub Desktop.
iOS8 iOS9 KeyboardView
#define KEYBOARD_WINDOW_LEVEL 10000000
static UIView *GetKeyboardView() {
UIWindow *keyboardWindow = nil;
for (UIWindow *window in [UIApplication sharedApplication].windows) {
if (window.windowLevel == KEYBOARD_WINDOW_LEVEL) {
keyboardWindow = window;
break;
}
}
if (!keyboardWindow) return nil;
UIView *inputContainer = nil;
for (UIView *subview in keyboardWindow.subviews) {
NSString *className = NSStringFromClass(subview.class);
if ([className isEqualToString:@"UIInputSetContainerView"]) {
inputContainer = subview;
break;
}
}
if (!inputContainer) return nil;
UIView *inputHost = nil;
for (UIView *subview in inputContainer.subviews) {
NSString *className = NSStringFromClass(subview.class);
if ([className isEqualToString:@"UIInputSetHostView"]) {
inputHost = subview;
break;
}
}
if (!inputHost) return nil;
UIView *kbImpl = nil;
for (UIView *subview in inputHost.subviews) {
NSString *className = NSStringFromClass(subview.class);
if ([className isEqualToString:@"_UIKBCompatInputView"]) {
for (UIView *view in subview.subviews) {
className = NSStringFromClass(view.class);
if ([className isEqualToString:@"UIKeyboardAutomatic"]) {
for (UIView *uiView in view.subviews) {
className = NSStringFromClass(uiView.class);
if ([className isEqualToString:@"UIKeyboardImpl"]) {
kbImpl = uiView;
break;
}
}
break;
}
}
break;
}
}
return kbImpl;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment