1

我想在快速向项目添加评论时实现 LinkedIn 的 Hakawai 提及。问题是 HKWTextView 应该尽可能小,适合它的框架以适合内容,并且建议的提及列表应该在上面弹出,但我找不到如何实现这一点的解决方案。

我一直在尝试使用自动调整 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)方法,结果与第二个屏幕上的结果相同(建议的提及列表在上面的表格视图下不可见)

有没有人经历过这个并设法让它工作?

4

1 回答 1

0

Follow these steps to solve your problem.

1) Create a TextView set fixed Height.

TextView

2) Select Height Constant and Go to Show the Size Inspector.

3) Select Relation as Greater Than or Equal.

Set Constant Attribute

4) Implement this code in your controller file.

// 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);

}
于 2019-06-10T04:50:26.293 回答