停止键盘解除重置视图的高度

时间:2014-09-10 11:51:15

标签: ios objective-c swift

我正在使用Storyboard(Xcode6 beta7)在iOS 8中创建登录屏幕。这是基本想法的图像:

enter image description here

按下任何一个文本区域会弹出键盘,按下它们之外的任何一个键盘会再次使用:

self.view.endEditing(true)

因此按下登录按钮会使键盘消失。

当用户输入无效的登录凭据时,我希望对话框视图的高度增加并显示一些错误消息:

enter image description here

我使用以下功能使用动画执行此操作:

func increaseHeight(view: UIView, increment: CGFloat) {

    UIView.animateWithDuration(1.0,
        delay: 0.0,
        usingSpringWithDamping: 0.3,
        initialSpringVelocity: 3.0,
        options: UIViewAnimationOptions.CurveEaseInOut,
        animations: ({
            view.frame = CGRect(
                x: view.frame.origin.x,
                y: view.frame.origin.y,
                width: view.frame.width,
                height: view.frame.height + increment
            )
        }),
        completion: nil
    )
}

如果我调用此功能,请按“登录”按钮,它按照我的意愿工作。执行动画并显示错误消息。

解决问题

但是,如果我首先开始编辑任何文本字段(即启动键盘)然后按下登录按钮,则会执行动画 - 但它会反弹回其原始高度。

键盘解除后如何才能使高度增量保持不变?

1 个答案:

答案 0 :(得分:0)

如果您使用自动布局,则需要更改约束而不是视图的框架。

heightOfViewConstraint.constant += increment

UIView animation....{
    self.layoutIfNeeded()
}

这应该让您的视图得到延伸,但前提是您使用自动布局和约束。