【发布时间】:2021-06-19 03:12:23
【问题描述】:
我遇到了下一个问题:我有一个 UITableView,其中自定义单元格有一个 UITextView。用户开始输入后,最后一行与具有输入附件视图的键盘重叠。所以我必须计算键盘顶部和最后一行.y 位置之间的差异,并将这个值分配给tableView contentInset。
问题是如何找出文本视图最后一行的矩形或位置?
我有听键盘的普通通知:
NotificationCenter.default.addObserver(self, selector: #selector(_toggleKeyboard), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(_toggleKeyboard), name: UIResponder.keyboardWillHideNotification, object: nil)
以及我必须计算所有这些东西的下一个方法:
@objc private func _toggleKeyboard(notification: NSNotification) {
let info = notification.userInfo as NSDictionary?
let rectValue = info![UIResponder.keyboardFrameEndUserInfoKey] as! NSValue
let kbSize = rectValue.cgRectValue
let kbFrame = view.convert(kbSize, from: view.window)
// val = bottom .y of last text view line
// keyboard .top - val = diff
// contentInsets.bottom = diff
}
【问题讨论】:
-
你已经尝试了什么?任何可以进一步解释问题的问题的屏幕截图/视频?最初我会说它与约束和安全插入有关,但在没有更多上下文的情况下可能是各种问题。
-
这是个好问题。请提供您的代码。
-
当我面临类似的任务时,我依靠
UITextView本身的底部。我什至把它抬高了几个点,所以在视觉上它就在键盘的顶部。 -
@PaulPeelen 我有以下布局:只有 UITextView 的表格视图单元格,具有左、上、右和下固定约束。
标签: ios swift uitableview tableview uitextview