iOS 11 TableViewCell 内嵌 TextView
2018-01-28 本文已影响224人
冰霜海胆
1、键盘遮挡问题
在 iOS 10 中,当
TableViewCell
内嵌的TextView
成为第一响应者弹出键盘后,输入的内容有多行时,TableView
会自动向上移动,使得TextView
内容不被键盘遮挡。
但在 iOS 11 中,这个特性消失了,多行内容在输入时会被键盘遮挡,
TableView
也不会自动向上移动。
解决方法:
textView.textContainer.maximumNumberOfLines = 0 func textViewDidChange(_ textView: UITextView) { if #available(iOS 11, *) { UIView.performWithoutAnimation { tableView?.performBatchUpdates(nil, completion: nil) textView.sizeToFit() } } else { tableView?.beginUpdates() tableView?.endUpdates() } }
2、输入文字时,TableView 跳动的问题
iOS 11 当
TableViewCell
内嵌的TextView
成为第一响应者弹出键盘后,输入内容会出现TableView
不停跳跃的问题。
解决方法:
iOS 10 中这样动态更新TextView
高度:tableView?.beginUpdates() tableView?.endUpdates()
iOS 11 中改为如下代码:
UIView.performWithoutAnimation { tableView?.performBatchUpdates(nil, completion: nil) textView.sizeToFit() }
3、tableView 滚动时,退下键盘
tableView.keyboardDismissMode = .onDrag