InputAccessoryView 使用键盘交互显示/隐藏上下移动表格视图

Posted

技术标签:

【中文标题】InputAccessoryView 使用键盘交互显示/隐藏上下移动表格视图【英文标题】:InputAccessoryView move table view up and down with keyboard show/hide interactively 【发布时间】:2020-06-12 17:38:50 【问题描述】:

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

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

故事板设置 -> https://i.stack.imgur.com/0QJyn.png

录屏->https://imgur.com/a/S5Oi9VS

相关代码片段

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...

【问题讨论】:

【参考方案1】:

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

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

到这里:

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


【讨论】:

如果我理解正确你希望我使用 UITableViewController? 绝对是。 我使用过 UITableViewController 但它不起作用,显示 kb 时表格不会向上滚动。我已经手动添加了输入文本视图,因为我无法在 IB 中添加它。我不确定我们是否可以自动向上滚动表格而不添加一些代码来处理它。

以上是关于InputAccessoryView 使用键盘交互显示/隐藏上下移动表格视图的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UILabel 放在键盘的“inputAccessoryView”中?

将视图用作 inputAccessoryView 时如何防止键盘添加自己的高度约束

inputAccessoryView 出现键盘时不调用

InputAccessoryView 边框?

优雅地将 UIView 移动到键盘的 inputAccessoryView

InputAccessoryView之后的iOS程序流程