猿问

当键盘快速显示时移动文本字段

当键盘快速显示时移动文本字段

我正在使用Swift进行iOS编程,我正在使用此代码移动UITextField,但它不起作用。我keyboardWillShow正确调用该函数,但文本字段不移动。我正在使用autolayout。

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);}deinit {
    NSNotificationCenter.defaultCenter().removeObserver(self);}func keyboardWillShow(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
        //let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
        var frame = self.ChatField.frame
        frame.origin.y = frame.origin.y - keyboardSize.height + 167
        self.chatField.frame = frame
        println("asdasd")
    }}


慕慕森
浏览 624回答 3
3回答

守着一只汪

如果您正在使用自动布局,我假设您已将“ 底部空间”设置为“超级视图” 约束。如果是这种情况,您只需更新约束的值即可。这是你用一点点动画做到的。func keyboardWasShown(notification: NSNotification) {     let info = notification.userInfo!     let keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()     UIView.animateWithDuration(0.1, animations: { () -> Void in         self.bottomConstraint.constant = keyboardFrame.size.height + 20     })}添加硬编码20只是为了弹出键盘上方的文本字段。否则键盘的上边距和文本字段的下边距将会触及。键盘关闭后,将约束的值重置为其原始值。
随时随地看视频慕课网APP
我要回答