此方法來自於SVProgressHUD
, 在查閱SVProgressHUD源碼時候想要作一些修改, 想要主動的獲取鍵盤的高度, 百度Google上沒有找到方法, 最後卻發現SVProgressHUD自己就提供了一個這樣的方法.windows
- (CGFloat)visibleKeyboardHeight { #if !defined(SV_APP_EXTENSIONS) UIWindow *keyboardWindow = nil; for (UIWindow *testWindow in [[UIApplication sharedApplication] windows]) { if(![[testWindow class] isEqual:[UIWindow class]]) { keyboardWindow = testWindow; break; } } for (__strong UIView *possibleKeyboard in [keyboardWindow subviews]) { if([possibleKeyboard isKindOfClass:NSClassFromString(@"UIPeripheralHostView")] || [possibleKeyboard isKindOfClass:NSClassFromString(@"UIKeyboard")]) { return CGRectGetHeight(possibleKeyboard.bounds); } else if([possibleKeyboard isKindOfClass:NSClassFromString(@"UIInputSetContainerView")]) { for (__strong UIView *possibleKeyboardSubview in [possibleKeyboard subviews]) { if([possibleKeyboardSubview isKindOfClass:NSClassFromString(@"UIInputSetHostView")]) { return CGRectGetHeight(possibleKeyboardSubview.bounds); } } } } #endif return 0; }