为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕慕森 2019-08-14 17:22:05
当键盘快速显示时移动文本字段我正在使用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")     }}
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超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只是为了弹出键盘上方的文本字段。否则键盘的上边距和文本字段的下边距将会触及。

键盘关闭后,将约束的值重置为其原始值。


查看完整回答
反对 回复 2019-08-14
  • 3 回答
  • 0 关注
  • 623 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信