在iOS 5中,鍵盤的高度是會變化的,比如切換到中文輸入法時會在鍵盤上方多出一層候選字區域,如下圖:
而在英文輸入法下是沒有文字候選區域的。
因此在用戶輸入場景下,布局的美觀和可用性可能受到鍵盤高度變化的影響,因此需要動態適應鍵盤高度。
解決方案是監聽鍵盤呼出事件的消息:
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
針對鍵盤高度做出自適應:
- - (void)keyboardWillShow:(NSNotification *)notification
- {
- static CGFloat normalKeyboardHeight = 216.0f;
-
- NSDictionary *info = [notification userInfo];
- CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
-
- CGFloat distanceToMove = kbSize.height - normalKeyboardHeight;
-
- //自適應代碼
- }
最後,移除觀察者。