Hakawai Autoresizing HKWTextView - PullRequest
1 голос
/ 06 июня 2019

Я хочу реализовать упоминания Хакавая в LinkedIn, чтобы быстро добавить комментарий к элементу.Проблема в том, что 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) результат такой же, как на 2-м экране (предлагаемый список упоминаний не виден при отображении таблицы выше)

Имееткто-нибудь испытал это и сумел это сработать?

1 Ответ

0 голосов
/ 10 июня 2019

Выполните следующие действия, чтобы решить вашу проблему.

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

}
...