我有一个包括4个部分的tableView(该tableView在一个View内,我使它像一个弹出视图一样),并且每个部分都有不同的行。
在上一节(4)中,我有一个TextView,当开始编辑TextView时,我需要滚动tableView,因为键盘覆盖了TextView。
我试图在textViewDidBeginEditing中滚动scrollToRow,因为那是我希望滚动开始的地方:
"<color:none jaja:a>".split(':')
numberOfSections是4,numberOfRows是1,因为我在第4节中有1行,因此,我从numberOfRows和numberOfSections中减去1以创建indexPathToScroll,因为最后一行是[0,3]而不是[1] ,4]。
我在中间/顶部/底部尝试了scrollToRow,并尝试了对或错的动画,什么也没发生,滚动不起作用。
有人知道为什么它不起作用吗?也许我不能在textViewDidBeginEditing中做到这一点?
谢谢!
通过NotificationCenter解决了该问题:
func textViewDidBeginEditing(_ textView: UITextView) {
let numberOfSections = tableView.numberOfSections
let numberOfRows = tableView.numberOfRows(inSection: numberOfSections-1)
let indexPathToScroll = NSIndexPath(row: numberOfRows-1, section: numberOfSections-1)
self.tableView.scrollToRow(at: indexPathToScroll as IndexPath, at: .middle, animated: false)
}
然后:
override func viewDidLoad() {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}