键盘弹出UITextField

时间:2015-07-19 22:14:19

标签: ios swift nsnotificationcenter uikeyboard

我在容器视图中有一个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

编辑:此时我几乎可以肯定,正是这种自动布局限制与我有关。

1 个答案:

答案 0 :(得分:1)

尝试在每个动画事务结束时添加commitAnimations :)我也遇到了这个问题...现在它工作正常..你可以将委托添加到文本域,你可以移动它委托方法DidBeginEditing和DidEndEditing方法textfield:)