我想实现LinkedIn的Hakawai在向项目快速添加评论中提到的功能。问题是HKWTextView应该尽可能小,适合它的框架来适应内容,上面应该弹出建议提及列表,但我找不到如何实现这一点的解决方案。
我一直在尝试用
public func textViewDidChange(_ textView: UITextView) {
let fixedWidth = textView.frame.size.width
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
textView.frame.size = CGSize(width: fixedWidth, height: newSize.height)
textView.isScrollEnabled = false
}
但结果是:
自动调整文本视图大小:
开始键入提及(列表中很少提及):
仅提及一项的列表:
如果不使用
textViewDidChange(_ textView: UITextView)
方法,则结果与第2个屏幕上的结果相同(建议的提及列表在上表视图下不可见)有没有人经历过这种情况并设法使之发挥作用?
最佳答案
按照这些步骤来解决你的问题。
1)创建一个文本视图集固定高度。
2)选择“高度常量”并转到“显示尺寸检查器”。
3)选择关系大于或等于。
4)在控制器文件中实现此代码。
// Tableview Delegate Method
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "NotesCell", for: indexPath) as! NotesCell
cell.txtViewNotes.tag = indexPath.row
cell.txtViewNotes.delegate = self
return cell;
}
// Textview Delegate Method
func textViewDidChange(_ textView: UITextView) {
adjustFrames(textView)
}
// Custom Method
func adjustFrames(_ textView: UITextView) {
let indexPath = IndexPath(row: textView.tag, section: 0)
let cell = yourTableView.cellForRow(at: indexPath) as! NotesCell
UIView.setAnimationsEnabled(false);
self.yourTableView.beginUpdates()
cell.constNoteHeight.constant = textView.contentSize.height
textView.beginFloatingCursor(at: CGPoint.zero)
textView.endFloatingCursor()
self.yourTableView.endUpdates()
UIView.setAnimationsEnabled(true);
}
关于ios - Hakawai自动调整大小HKWTextView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56473496/