【发布时间】:2021-01-17 17:29:04
【问题描述】:
我最初使用NSNotification.Name.UIKeyboardDidShow、NSNotification.Name.UIKeyboardDidHide 之类的通知,希望它们只会被触发一次,因此我可以设置一个布尔值,即键盘完全显示或隐藏。
但我注意到,所有事件:UIKeyboardWillShow、UIKeyboardDidShow、UIKeyboardWillHide、UIKeyboardDidHide、UIKeyboardWillChangeFrame、UIKeyboardDidChangeFrame 都设计为在键盘出现或消失时多次触发。
似乎没有办法检查键盘是完全可见还是部分不可见。我查看的所有答案都听取了这些通知并进行了计算以避免视图被键盘隐藏。但是我找不到任何方法来查看键盘是否完全显示(或完全隐藏)
我什至查看了KeyboardObserver,它可以更容易地观察键盘事件,但是由于它仍然基于默认通知,它的 KeyboardEventType.didShow 和 KeyboardEventType.didHide 在键盘出现和消失时会被多次触发。
应该有更好的方法来判断键盘是完全可见还是不可见!
【问题讨论】:
-
只是一个想法,虽然我从未尝试过。
UIKeyboardWillChangeFrame为您提供屏幕坐标中的键盘框架。你看不出这个框架是否与屏幕的框架完全相交?您必须使用一些CGRect翻译和计算:developer.apple.com/documentation/coregraphics/cgrect/… -
我尝试使用末端框架,但它的高度是可变的,所以我也不能真正使用它。还有其他属性可以给我最终的键盘高度吗?
标签: ios swift nsnotificationcenter uikeyboard