如何在用户单击此表格视图单元格中的文本视图时将表格视图滚动到单元格

时间:2015-05-04 13:07:41

标签: ios uitableview swift textview tableview

我在这里找到了解决方法:

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}一样工作但是如果键盘没有隐藏它,我希望它在屏幕的顶部。

0 个答案:

没有答案