ios - 无法获得 iPad 浮动键盘的正确高度
问题描述
我正在使用以下代码来获取 iPad 键盘的高度:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(printKeyboardHeight),
name: UIResponder.keyboardDidChangeFrameNotification,
object: nil
)
}
@objc private func printKeyboardHeight(notification: Notification) {
guard let keyboardRect = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue else { return }
print("==> keyboardFrameEndUserInfoKey height: \(keyboardRect.size.height)")
}
}
iPad上的这段代码在键盘正常的时候可以正常工作,但是在键盘浮动的时候就不行了。
用户点击文本字段后,会出现键盘并调用 keyboardDidChangeFrameNotification 通知。
如果键盘是浮动的,那么我们第一次得到错误的高度 362。如果用户随后手动移动浮动键盘的某个位置,则再次调用通知并返回正确的值 308(见下图)。
这是一个错误还是我错过了什么?我需要能够在键盘第一次出现时获得正确的高度。
这发生在 iOS 13 和 iOS 14 上。
任何想法?
解决方案
推荐阅读
- rest - 使用 REST API 在 SharePoint 中创建项目 - 人员选取器空值
- ios - 使用 Expo 创建的生产构建问题
- rstudio - 大气电导方程
- ruby-on-rails - rails form:如果已经有这个孩子,不要在表单中显示孩子
- postgresql - postgres:将 filter() 与 percentile_cont() 结合使用
- javascript - 我可以通过要求直接从动作创建者内部访问 redux 调度吗?
- c# - Asp.Net Identity 从一个应用程序池标识生成密码重置令牌并在另一个应用程序池标识上进行验证
- java - 从 snapshot.getKey() 获取不同的字符串;和 mAuth.getUid(); 没有 .push();
- c - 不是二次方程的工作根
- python - 在python中重新运行代码时如何将变量设置为一次