iOS键盘通知

iOS系统键盘通知

UIKeyboardWillShowNotification      // 键盘将要出现
UIKeyboardDidShowNotification // 键盘已经出现
UIKeyboardWillHideNotification // 键盘将要消失
UIKeyboardDidHideNotification // 键盘已经消失
UIKeyboardWillChangeFrameNotification // 键盘frame将要修改
UIKeyboardDidChangeFrameNotification // 键盘frame已经修改

键盘通知事件里获取userInfo key

UIKeyboardFrameBeginUserInfoKey         // 开始时的键盘位置
UIKeyboardFrameEndUserInfoKey // 结束时的键盘位置
UIKeyboardAnimationCurveUserInfoKey // 动画类型
UIKeyboardAnimationDurationUserInfoKey // 动画持续事件
UIKeyboardIsLocalUserInfoKey // 是否为本地用户键盘
UIKeyboardCenterBeginUserInfoKey // 开始时的键盘中心
UIKeyboardCenterEndUserInfoKey // 结束时的键盘中心
UIKeyboardBoundsUserInfoKey // 键盘边界

关于iPad浮动键盘

在iPad上键盘可以拆分和浮动,在拆分和浮动情况下 UIKeyboardWillShowNotificationUIKeyboardWillHideNotification 两个通知并会触发,需要通过监听UIKeyboardWillChangeFrameNotification 或者UIKeyboardDidChangeFrameNotification 获取键盘的一些变化。

[[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardDidChangeFrameNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * notification) {
CGRect keyboardEndFrame = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGRect screenRect = [[UIScreen mainScreen] bounds];
if (CGRectIntersectsRect(keyboardEndFrame, screenRect)) {
// 键盘显示
} else {
// 键盘隐藏
}
}];

2020.3.11 更新

如果iPad上使用了悬浮键盘,当键盘消失的时候,键盘的x,y,size都是0,需要特殊处理。

在 iPad 上拆分和移动键盘: https://support.apple.com/zh-cn/HT207521

在 iPad 上使用浮动式键盘: https://support.apple.com/zh-cn/HT210758