如何在按下时将textView置于键盘顶部?

时间:2015-04-01 17:21:37

标签: ios swift uitextview

我的一个视图的底部有一个文本视图,如果我没有做任何事情,当它弹出时它会被键盘隐藏起来。我所做的是当键盘即将出现时,文本视图向上移动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

    }
}

1 个答案:

答案 0 :(得分:1)

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

像这样的东西

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

您可以在Apple Docs

中详细了解此信息