我正在使用UIKeyboardWillShowNotification和UIKeyboardWillHideNotification动画沿键盘显示动画使用UIKeyboardAnimationDurationUserInfoKey,UIKeyboardAnimationCurveUserInfoKey和UIKeyboardFrameEndUserInfoKey.
一切正常,只要元素开始位置在屏幕的底部.我的元素(在截图输入框)开始的UITabBarController以上,所以如果我的动画开始有键盘的UITextField,沿着动画缩小,直到它到达其终点之间的差距.
什么我真的寻找是这样的:"制作具有相同的动画曲线,但开始移动,如果键盘达到我的美星的位置".
如果我想补充的延迟启动动画它不会与宽松正确的,这可能会在未来的iOS版本打破.
如果你与我分享你的想法会很棒.:-)

我试图通过将底部约束修改为键盘高度来显示键盘时的视图。但是返回给我的键盘高度是变化的。
当我点击模拟器中的文本字段时,键盘高度为302。当我尝试打开和关闭软件键盘时,它显示260何时出现键盘。为什么会这样呢?
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(FriendsViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
func keyboardWillShow(notification: NSNotification) {
print("Keyboard appearing")
guard let keyboardHeight = (notification.userInfo! as NSDictionary).objectForKey(UIKeyboardFrameBeginUserInfoKey)?.CGRectValue.size.height else {
return
}
bottomConstraint.constant = keyboardHeight
print("keyboard height : \(keyboardHeight)")
self.view.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)
的高度260实际上是正确的高度,因为它完美地调整了我的视野。随着302我的观点高度偏移了太多。
我的观点的布局是。UITextField在顶部,然后在其UITableView下方。