在iOS開發中經常需要監聽鍵盤的高度,然后來適配屏幕中控件的位置,舉個栗子:在做聊天界面時,當用戶點擊輸入框需要彈出鍵盤,此時輸入框的位置需要移動到鍵盤的位置上面,此時就要監聽鍵盤的高度,然后去決定輸入框的高度,本文將以此為例
1.設置監聽鍵盤frame變化的通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillChangeFrame:)name:UIKeyboardWillChangeFrameNotification object:nil];
2.實現綁定的方法
-(void)keyboardWillChangeFrame:(NSNotification*)notif
{
NSDictionary*userInfo = notif.userInfo;
//動畫的持續時間
double duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
//鍵盤的frame
CGRect keyboardF = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
[UIView animateWithDuration:duration animations:^{
if(view.size.height== keyboardF.size.height) {
//鍵盤消失
view.size.height = 0 ;
}else{
//鍵盤出現
view.size.height = keyboardF.size.height ;
}
}];
}
tip:當觀察者存在時,其他控制器中鍵盤frame發生改變也會被監聽到,如果要避免這種情況可在Viewwillappear中添加觀察者,在Viewwilldisappear中移除觀察者。