当键盘快速显示时移动文本字段我正在使用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只是为了弹出键盘上方的文本字段。否则键盘的上边距和文本字段的下边距将会触及。
键盘关闭后,将约束的值重置为其原始值。
- 3 回答
- 0 关注
- 623 浏览
添加回答
举报
0/150
提交
取消