iOS:获取软键盘是否可见的现代方法
使用以下这段代码,我们可以对软键盘何时可见/不可见有一个相当清楚的判断:
let showingObserver = NotificationCenter.default.addObserver(
forName: UIResponder.keyboardWillShowNotification,
object: nil,
queue: .main
) { [weak self] _ in
// keyboard is (about to be) shown
}
let hidingObserver = NotificationCenter.default.addObserver(
forName: UIResponder.keyboardWillHideNotification,
object: nil,
queue: .main
) { [weak self] _ in
// keyboard is (about to be) hidden
}
但这段代码只对停靠的键盘有效。对于其他类型的键盘,例如未停靠、分屏或浮动,这些通知不会被触发。UIResponder.keyboardWillChangeFrameNotification 会在这些其他类型的键盘上触发,但它不能提供有用的信息来区分键盘是显示还是隐藏。是否还有其他可靠的方法让这个功能适用于所有软键盘类型?我知道有一个相对较新的类(UIKeyboardLayoutGuide)可以适用于所有键盘类型,其文档写道:"一个在你应用的布局中表示键盘所占空间的布局引导。" 我在想这个新类是否能提供用于检测键盘可见性的API!
解决方案
是的,键盘布局引导是现代做法。再也不应该使用通知了。你根本不需要“检测键盘可见性”;你只需使用约束将界面元素绑定到该引导,作为原始界面布局的一部分,让一切自动按预期发生。
在iPad上,浮动/未停靠的键盘的细节稍微复杂一些,但本质上仍然只是创建并配置约束。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。