gpt4 book ai didi

swift - 在 iOS 11 的键盘后面扩展 ScrollView insets

转载 作者:行者123 更新时间:2023-11-28 06:11:10 25 4
gpt4 key购买 nike

自从 Apple 引入了 safe area insetsadjusted content insets 之后,已经可以正常工作的 UI 布局代码就被破坏了。在我的例子中,UIScrollView 底部插图在键盘出现时扩展:

func keyboardWillResize(_ notification: Notification) {
let info: [AnyHashable: Any] = notification.userInfo!
let keyboardTop = self.view.frameOnScreen.maxY - (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue.y
UIView.animate(withDuration: 0.3, animations: {
self.tableView.contentInset.bottom = keyboardTop
self.tableView.scrollIndicatorInsets = self.tableView.contentInset
})
}

在 iOS 11 中,这段代码会在键盘出现时产生额外的插图,等于标签栏的高度。这很明显,因为现在 contentInset 仅表示用户定义的 insets,而真正的 insets 由 iOS 11 中引入的 adjustedContentInset 表示。

所以我的问题是如何妥善处理这个案子?有写的选项

self.tableView.contentInset.bottom = keyboardTop - self.tableView.adjustedContentInset.bottom

但它看起来很丑。也许有内置方法可以在键盘后面扩展 insets?

最佳答案

显然,答案在官方文档中。我们应该将这些内容委托(delegate)给 View Controller 并处理它的安全区域插图,而不是手动调整内容插图。所以,这是工作代码:

func keyboardWillResize(_ notification: Notification) {
let info: [AnyHashable: Any] = notification.userInfo!
let keyboardTop = self.view.frameOnScreen.maxY - (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue.y
UIView.animate(withDuration: 0.3, animations: {
self.additionalSafeAreaInsets.bottom = max(keyboardTop - self.view.safeAreaInsets.bottom, 0)
})
}

关于swift - 在 iOS 11 的键盘后面扩展 ScrollView insets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46547841/

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