当键盘出现时,为了不覆盖输入字段,我正在向上移动我的视图。
我这样做的代码如下:
var keyboardShown: Bool = false {
didSet(oldValue) {
let keyboardHeight: CGFloat = 216
var frame = view.frame
if keyboardShown {
frame.origin.y = -keyboardHeight
} else {
frame.origin.y = 0
}
view.frame = frame
}
}
func textFieldDidBeginEditing(textField: UITextField) {
keyboardShown = true
}这是可行的,但没有动画,所以它看起来奇怪的观点,只是跳起来。那么,是否有一个功能,以使这个动画?
另外,我需要打电话给layoutIfNeeded()吗?
提前谢谢你,
发布于 2015-09-08 06:52:25
我觉得你应该试试这个
在viewDidLoad中为键盘添加这些通知
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)当键盘显示或隐藏时,用这些方法做任何事情
func keyboardWillShow(note: NSNotification) {
var userInfo: [NSObject : AnyObject] = note.userInfo
var duration: NSTimeInterval = userInfo[UIKeyboardAnimationDurationUserInfoKey].doubleValue()
var curve: UIViewAnimationCurve = userInfo[UIKeyboardAnimationCurveUserInfoKey].integerValue()
var keyboardFrameEnd: CGRect = userInfo[UIKeyboardFrameEndUserInfoKey].CGRectValue()
keyboardFrameEnd = self.view.convertRect(keyboardFrameEnd, fromView: nil)
UIView.animateWithDuration(duration, delay: 0, options: UIViewAnimationOptionBeginFromCurrentState | curve, animations: { self.contentView.frame = CGRectMake(0, 0, keyboardFrameEnd.size.width, keyboardFrameEnd.origin.y)
}, completion: nil)
}
func keyboardWillHide(note: NSNotification) {
var userInfo: [NSObject : AnyObject] = note.userInfo
var duration: NSTimeInterval = userInfo[UIKeyboardAnimationDurationUserInfoKey].doubleValue()
var curve: UIViewAnimationCurve = userInfo[UIKeyboardAnimationCurveUserInfoKey].integerValue()
var keyboardFrameEnd: CGRect = userInfo[UIKeyboardFrameEndUserInfoKey].CGRectValue()
keyboardFrameEnd = self.view.convertRect(keyboardFrameEnd, fromView: nil)
UIView.animateWithDuration(duration, delay: 0, options: UIViewAnimationOptionBeginFromCurrentState | curve, animations: { self.contentView.frame = CGRectMake(0, 0, keyboardFrameEnd.size.width, keyboardFrameEnd.origin.y)
}, completion: nil)
}享受:)
https://stackoverflow.com/questions/32446144
复制相似问题