Hakawai自动调整大小HKWTextView

时间:2019-06-06 08:18:12

标签: ios swift tagging mention

我想在快速添加评论到项目中实现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
    }

但是结果是:

自动调整文本视图大小: autoresizing text view

开始输入提及(提及很少的提及): started typing mention

列出一个提示: one mention poped

没有textViewDidChange(_ textView: UITextView)方法的结果与第二个屏幕上的结果相同(建议的提及列表在上面的表格视图下不可见)

有人经历过并设法使其起作用吗?

1 个答案:

答案 0 :(得分:0)

请按照以下步骤解决您的问题。

1)创建一个固定高度的TextView。

TextView

2)选择“高度常数”,然后显示“ 尺寸检查器”

3)将“关系”选择为“ 大于或等于”。

Set Constant Attribute

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

}