带有在 IB 中创建的自定义视图的 InputAccessoryView
Posted
技术标签:
【中文标题】带有在 IB 中创建的自定义视图的 InputAccessoryView【英文标题】:InputAccessoryView with custom view created in IB 【发布时间】:2020-06-12 14:12:27 【问题描述】:我已经阅读了很多关于这个主题的材料,但其中大多数都是以编程方式创建自定义视图。
是否可以将 InputAccessoryView 与在 IB 中创建的自定义视图一起使用?在故事板中,我添加了 textInputView,其中我添加了文本视图和发送按钮等,如下面的屏幕截图所示。
我遵循了代码,因此出于某种原因删除了表格视图,因此我无法使其正常工作。我在情节提要中添加了表格视图。
我在这里只展示了与 InputAccessoryView 相关的代码。
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...
左侧屏幕截图是不显示表格视图的附件视图代码。如果我注释掉与附件视图相关的代码,它会显示表格视图,如右侧屏幕截图所示。
【问题讨论】:
并且tableView显示没有输入附件视图? 它显示了 inputTextView,正如您在屏幕截图中看到的那样。在文本视图中输入确实会显示键盘。由于 tableview 没有显示我无法检查拖动以关闭功能。我不确定为什么在为附件视图添加代码后不显示表格视图?如果我删除附件视图,表视图就会出现。 如果你删除这一行会发生什么:'textInputView.removeFromSuperview()'? 【参考方案1】:似乎您可能将UITableView
的底部限制在textInputView
的顶部。当您将textInputView
设置为inputAccessoryView
的UIViewController
时,这不再按预期工作。将textInputView
设置为inputAccessoryView
时,请确保将UITableView
的底部限制为UIViewController
的view
的底部。
【讨论】:
我不得不进行一些猜测才能弄清楚这一点。如果您在将来发布新问题时提供有关实施的更多详细信息会更好。 我不确定这是否是约束问题,否则我会根据需要添加更多详细信息。以上是关于带有在 IB 中创建的自定义视图的 InputAccessoryView的主要内容,如果未能解决你的问题,请参考以下文章
在具有动态高度的 IB uitableviewcell 中使用带有 XIB 的自定义视图