gpt4 book ai didi

ios - iPhone X 和 iPhone 8 键盘高度不同

转载 作者:IT王子 更新时间:2023-10-29 07:41:59 25 4
gpt4 key购买 nike

我使用下面的代码来获取键盘高度。然后用这个高度来计算一个UIView的frame,确保这个UIView刚好在键盘上方。

但在 iPhoneX 模拟器中输出是 333 而 iPhone 8 模拟器是 258

问题:如果使用 rect.height 作为 iPhone 8 模拟器的键盘高度,则布局正确。对于 iPhone X,UIView 和键盘之间存在间隙。这意味着 333 高于 iPhone X 中的实际键盘高度。

高度不一样是什么原因?以及如何获得正确的键盘高度?

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)


@objc func keyboardWillShow(_ notification: NSNotification) {
if let rect = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
print(rect.height)
}
}

像这张图,绿色边框应该是多余的部分。实际上,我需要键盘顶部没有绿色矩形间隙的红色部分。 enter image description here

编辑

好的,在@Craig 的帮助下,我发现这个方法只能由 iPhone X 调用。所以我在这里更新框架。只需在此处粘贴代码。

安全区底部高度为 22.0 似乎不正确。

override func viewSafeAreaInsetsDidChange() {
if #available(iOS 11.0, *) {
super.viewSafeAreaInsetsDidChange()
view.safeAreaInsets.bottom // This value is the bottom safe area place value.
}
}

编辑2通常 view.safeAreaInsets.bottom 应该是 34.0,但是如果你使用的是容器 View ,这个值可以不同,比如我的是 22.0。

最佳答案

同时 Craig's answer是正确的,您可能不想将 View 固定到 view.bottombottomLayoutGuide 而不是 safe area bottom (尤其是如果您的键盘并不总是打开,并且您不希望您的 View 覆盖 Home Indicator 区域)。

这是针对这些情况的修复。它从键盘高度中减去安全区域底部插图的高度:

var keyboardHeight = ... // Get the keyboard height from keyboard notification

if #available(iOS 11.0, *) {
let bottomInset = view.safeAreaInsets.bottom
keyboardHeight -= bottomInset
}

关于ios - iPhone X 和 iPhone 8 键盘高度不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46420488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com