gpt4 book ai didi

swift - 将 UITableView 约束为 InputAccessory

转载 作者:行者123 更新时间:2023-12-04 13:59:50 25 4
gpt4 key购买 nike

我的应用程序中有一个类似聊天的 UI,所以我有一个底部栏,即 inputAccessoryView 和我的 tableView。我想要做的是在键盘进入屏幕和屏幕外时正确调整 tableView 的大小。但是,简单地将 tableView 的底部限制到 inputAccessoryView 的顶部似乎是不可能的。那么如何从我的应用程序中实现这种类似 Messages 的行为呢?

View Hirearchy

我的 Controller 的 viewDidLoad()

override func viewDidLoad() {

super.viewDidLoad()
noteTableView.transform = CGAffineTransform(rotationAngle: -(CGFloat)(Double.pi));
noteTableView.keyboardDismissMode = .interactive


noteTableView.delegate = self
noteTableView.dataSource = self

[...]

}

这是让我的 inputAccessoryView 实际工作的两个函数
override var inputAccessoryView: UIView? {
get {
return inputBar
}
}

override var canBecomeFirstResponder: Bool {
return true
}

我在 inputAccessory 内的 textField 上也有一个点击手势识别器,它将它的行为从“按钮”切换到正确的文本字段,所以这里有一些。
@objc func newButtonTapped(tapGestureRecognizer: UITapGestureRecognizer) {

[...]

inputBar.inputField.isSelectable = true
inputBar.inputField.isEditable = true
inputBar.inputField.becomeFirstResponder()

[...]

}

最佳答案

iOS 15 苹果推出 keyboardLayoutGuide这是一个 UILayoutGuide动态跟随键盘变化(甚至 iPad 上的键盘 float 模式)。
所以你所要做的就是:

myTableView.bottomAnchor.constraint(equalTo: self.view.keyboardLayoutGuide.TopAnchor)
Apple's Developer Documentation 上阅读有关键盘布局指南的更多信息或观看 WWDC21 Session .

关于swift - 将 UITableView 约束为 InputAccessory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51452821/

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