输入附件视图通过键盘交互显示/隐藏上下移动表格视图



我一直在查看有关如何在使用 InputAccessoryView 时用键盘向上/向下移动表格视图的各种 tuts,但我没有找到任何解决方案。大多数解决方案都建议使用键盘通知,这违背了为我提供InputAccessoryView的目的。我开始使用 InputAccessoryView 只是为了避免 kb 通知,因为使用 kb 通知很难以交互方式实现拖动以关闭键盘。

我们如何使用 InputAccessoryView 上下移动表视图?任何提示都可以,因为我已经知道如何使用 kb 通知上下移动表视图。

情节提要设置 -> https://i.stack.imgur.com/0QJyn.png

屏幕录制 -> https://i.stack.imgur.com/Ke0aq.jpg

相关代码片段

class InputAccViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var textView: UITextView!
@IBOutlet weak var textInputView: UIView!
// other code
override var canBecomeFirstResponder: Bool { return true }
override var inputAccessoryView:UIView {
get{
return self.textInputView
}
}
override func viewDidLoad() {
super.viewDidLoad()
textInputView.removeFromSuperview()
// other code
}
// other code tableview delegates etc...
}

在不久前遇到同样的问题时,我找到了一个简单的解决方案。我把它放在这里,以便它也对其他人有所帮助。我所做的只是用一个UITableView约束替换UIViewController,该约束UIView子类的所有方面都view只有一个UITableViewController,并使用内置的tableView来填充数据。键盘功能上方的所有移动内容都内置于UITableViewController中。由于我以编程方式进行了布局,因此我很容易尝试并使其工作。您似乎已经通过故事板自己尝试了一下,您会对结果感到宽慰。到最后,这已经实现,您的代码应该从这里看:

class InputAccViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!

对此:

class InputAccViewController: UITableViewController {
// `@IBOutlet weak var tableView: UITableView!` removed
}

最新更新