ios - iPhone X 键盘出现显示额外的空间

标签 ios swift iphone-x

我创建了一个聊天 UI,我在其中为屏幕底部的 tableView 添加了一个 constraint。我通过添加键盘高度来更改约束值,这在除 iPhone X 之外的所有设备中都可以正常工作。

键盘不可见时的用户界面:

enter image description here

这很好。

问题是当键盘出现时, TextView 和键盘之间的空白区域是可见的:

enter image description here

我是否必须为此尝试不同的方法,或者可以使用约束来解决?

最佳答案

在计算约束值时尝试减去安全区域底部插图的高度。

这是一个处理 UIKeyboardWillChangeFrame 通知的示例实现。

@objc private func keyboardWillChange(_ notification: Notification) {
    guard let userInfo = (notification as Notification).userInfo, let value = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue else { return }
    let newHeight: CGFloat
    if #available(iOS 11.0, *) {
        newHeight = value.cgRectValue.height - view.safeAreaInsets.bottom
    } else {
        newHeight = value.cgRectValue.height
    }
    myConstraint.value = newHeight
}

关于ios - iPhone X 键盘出现显示额外的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47286239/

相关文章:

ios - 使用 CoreData/NSFetchedResultsController 使用来自 PrepareForSegue 的字符串填充 UISearchBar

objective-c - 沿二次曲线对 View 的中心点进行动画处理

ios - ios9.3上xcode 7.3中的路径似乎没有有效的已编译 Storyboard

swift - jsqmessagesviewcontroller inputToolBar IOS 11 iphone X Swift4

ios - 由于 http post 请求上的 '&' 字符,字符串参数被分割

ios - 我无法在 iPad 5.1 上运行我的应用程序,因此我需要将其降级到 5.0 或更低的 iOS 版本

ios - 如何在 Swift 中创建全局函数

ios - 获取键盘高度在 IOS 11 beta 上不起作用

iOS 11 和 iPhone X : UINavigationBar's toolbar spacing incorrect when embedded in UITabBarController

iPhone X 模拟器上的 iOS slider 滞后