一、問題描述
如下圖,在強制操作橫屏后回歸豎屏,顯示異常, 而且是 iOS 14 才出現(xiàn)的。

顯示異常
二、問題定位
- 確實是通知成 橫屏的 鍵盤了

IQKeyboardManager
- 正常時:kbFrame:
(origin = (x = 0, y = 407), size = (width = 375, height = 260))
- 異常時:kbFrame:
(origin = (x = 0, y = 115), size = (width = 667, height = 260))
說白了就是鍵盤通知中UIKeyboardFrameEndUserInfoKey值, 沒有真正跟隨橫豎屏轉(zhuǎn)換而改變
三、問題解決
- 那就是在此時切換成橫豎屏的時候,進行設置:
[[UIDevice currentDevice] setValue:@(UIInterfaceOrientationPortrait)
forKey:@"orientation"];
PS: 如果代碼中有依賴UIScreen的bounds屬性、UIWindow的bounds屬性、鍵盤通知中UIKeyboardFrameEndUserInfoKey值、[UIApplication sharedApplication].statusBarFrame的地方, 那么切換橫豎屏的時候就需要注意啦。引用自: iOS7到iOS8 一個通用的橫豎屏幕切換總結(jié)