我在这里找到了解决方法:
How to scroll UITextView above Keyboard in a UITableView in swift
但我希望它在键盘正上方+ 10-20px。
我试过在viewDidLoad()中添加一个观察者来找出键盘高度:
var keyboardSize: CGRect?
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
}
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
func keyboardWillShow(notification: NSNotification) {
if let userInfo = notification.userInfo {
keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue()
println(keyboardSize)
}
}
然后在textViewShouldBeginEditing中,我从textView tableViewCell到tableView得到一个点,并尝试从contentOffset.y值中减去keyboard.height。
func textViewShouldBeginEditing(textView: UITextView) -> Bool {
var pointInTable:CGPoint = textView.superview!.convertPoint(textView.superview!.frame.origin, toView: tableView)
var contentOffset:CGPoint = tableView.contentOffset
contentOffset.y = pointInTable.y
if keyboardSize != nil {
contentOffset.y -= keyboardSize!.height
}
tableView.contentOffset = contentOffset
return true
}
当我运行应用程序并第一次单击textView时它不起作用,但第二次它像this.
一样工作一切都很好,但我希望它第一次工作还有一件事:如果我点击tableView底部的单元格中的textView,然后在第一个单元格中单击textView,它将像{{3}一样工作但是如果键盘没有隐藏它,我希望它在屏幕的顶部。