我在容器视图中有一个UITextField
,当键盘弹出时,容器视图消失。在同一容器视图中是UICollectionView
,其自定义单元格每个都包含一个UITextField
,键盘对它们来说效果很好。
我在keyboardWillShow
调用的动画函数中打印出容器视图的框架,并且容器视图的框架对于两种情况都是相同的,所以看起来容器视图就消失了(而不是"没有被移动"正如我所想的那样)当选择了特定的UITextField
时。相关代码是:
func keyboardWillShow(notification: NSNotification) {
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
kbHeight = keyboardSize.height
self.animateDurationView(true)
}
}
}
func keyboardWillHide(notification: NSNotification) {
self.animateDurationView(false)
}
func animateDurationView(up: Bool) {
var movement = up ? -kbHeight : kbHeight
println(movement)
UIView.animateWithDuration(0.3, animations: {
self.durationView.frame = CGRectOffset(self.durationView.frame, 0, movement)
println(self.durationView.frame)
})
}
可以在此帖子中找到屏幕截图:KeyboardWillShow only moves container UIView for certain UITextFields
编辑:此时我几乎可以肯定,正是这种自动布局限制与我有关。
答案 0 :(得分:1)
尝试在每个动画事务结束时添加commitAnimations :)我也遇到了这个问题...现在它工作正常..你可以将委托添加到文本域,你可以移动它委托方法DidBeginEditing和DidEndEditing方法textfield:)