如何使textView在按下时位于键盘顶部



我在一个视图的底部有一个文本视图,如果我什么都不做,当它弹出时,它会被键盘隐藏。我所做的是,当键盘即将出现时,文本视图向上移动160点。问题是,由于尺寸不同,它在每部iPhone上的位置并不完全相同。我想知道文本视图是否可以坐在键盘上20点,而不是从"原点"向上推160点。

override func viewDidLoad() {
    super.viewDidLoad()
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
}
var isShown: Bool = false
var willHide: Bool = false
func keyboardWillShow(sender: NSNotification) {
    isShown = true
}
func keyboardWillHide(sender: NSNotification) {
    willHide = true
}
func textViewDidBeginEditing(textView: UITextView) {
    if isShown == true {
        self.view.frame.origin.y -= 160
    }
}
func textViewDidEndEditing(textView: UITextView) {
    if willHide == true {
        self.view.frame.origin.y += 160
    }
}

您可以从通知对象中获取键盘的大小。

像这样的

NSDictionary* info = [sender userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

您可以在Apple Docs 中阅读更多关于此的信息

最新更新