如何在呈现视图后向上移动视图?

时间:2015-10-28 04:32:00

标签: ios swift view keyboard presentviewcontroller

我有一个包含文本字段的视图。每当用户点击该texfield时,键盘就会出现,然后我向上移动一点点。一切都很好,直到我提出一个新的viewcontroller然后解雇它,在我解除新的viewcontroller后,我在我的旧viewcontroller上得到了一个奇怪的行为,有点像这样:

enter image description here

在解除新的视图控制器后我显示键盘之前就像弹跳一样,这会影响我隐藏键盘的时候,我的视野会低于它的原始位置:

enter image description here

这是我的代码:

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)

}

func keyboardWillShow(sender: NSNotification) {

    self.view.frame.origin.y -= 100

}

func keyboardWillHide(sender: NSNotification) {

    self.view.frame.origin.y += 100
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你需要尝试这样的事情,你不能总是认为键盘将是那么高,特别是随着第三方键盘的出现。

在您的keyboardWillHidekeyboardWillShow中,您需要获得键盘高度:

if let keyboardSize = (sender.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
    self.view.frame.origin.y += keyboardSize
}