Ответ 1
необходимо добавить следующий метод:
func textViewDidChange(textView: UITextView) {
tableView.beginUpdates()
tableView.endUpdates()
}
он обновит ограничения без перезагрузки tableview
У меня есть UITextView
в tableViewCell, и с помощью iOS 8 предусмотрен подход UITableViewAutomaticDimension
, указанный здесь.
Если пользователь добавляет новую строку в UITextView
, и поэтому textView, высота ячейки должна увеличиваться, как я могу обновить высоту?
Пробовал:
cell.layoutIfNeeded()
cell.setNeedsUpdateConstraints()
Это не работает.
Если я перезаряжаю ячейку, например
tableView.reloadRowsAtIndexPaths([iindexPath], withRowAnimation: .None)
это работает, но тогда мне нужно иметь дело с отставкой и показать клавиатуру. Я бы избегал этого. Любое обходное решение?
необходимо добавить следующий метод:
func textViewDidChange(textView: UITextView) {
tableView.beginUpdates()
tableView.endUpdates()
}
он обновит ограничения без перезагрузки tableview
После некоторого времени textView
начнется прокрутка, чтобы увеличить его высоту в новой строке за все время, когда вам нужно реализовать метод textViewDidChangeText:
и увеличить его высоту, вычислив высоту текста.
Чтобы использовать UITableViewAutomaticDimension
, вам нужно добавить ограничения на subviews
сверху вниз, я думаю, вы также должны создать и IBOutlet для ограничения высоты textView и установить постоянное значение в методе textViewDidChangeText
, в этом случае tableViewCell
высота будет динамически изменяться.