在iOS 8上,我发现每次更改键盘的输入语言或点击文本字段以显示键盘时,都会收到UIKeyboardWillShowNotification
和UIKeyboardDidChangeFrameNotification
。
那么这两个通知和之间的区别是什么 在这两个通知的回调中做什么是正确的?
答案 0 :(得分:0)
According to the docs,UIKeyboardDidChangeFrameNotification
“在键盘框架发生更改后立即发布”,因此应在UIKeyboardWillShowNotification
和UIKeyboardWillHideNotification
之后发布。
是否应该使用UIKeyboardDidChangeFrameNotification
或UIKeyboardWillShowNotification
取决于您要完成的操作...如果您需要通知才能在键盘出现时触发操作,请使用UIKeyboardWillShowNotification
;否则,如果您需要通知以在键盘出现时触发操作并消失,请使用UIKeyboardDidChangeFrameNotification
。
答案 1 :(得分:0)
UIKeyboardDidChangeFrameNotification
针对所有更改发布,而不仅仅是显示和隐藏。例如,如果键盘改变了大小 - 这可能由于多种原因而发生,例如切换到不同的可安装键盘,键盘决定提供建议,或将iPad键盘拆分为2)。
另请注意,每次拨打UIKeyboardDidChangeFrameNotification
时,您都可以接听UIKeyboardWillChangeFrameNotification
次来电。被告知发生了 更改,如果该更改足够复杂,您可能会被告知实际发生的多个更改。