Swift - 当我有一个底部标签栏时,如何在动画期间使文本字段与键盘匹配?

时间:2015-02-07 03:10:50

标签: ios swift animation keyboard

我有一个应用程序,它在屏幕底部有一个标签栏(40磅高),以及一个直接在其上方的UITextField。当键盘变为活动状态时,我想为文本字段设置动画,使其在贴在键盘顶部时向上移动。

但是,这非常棘手,因为在键盘动画越过底部标签栏之前,文本字段不应移动。

所以这就是我想要实现的动画:

  • 键盘开始向上动画,文字字段保持不变
  • 键盘到达底部标签栏的顶部
  • 文本字段开始向上设置动画,并与键盘动画曲线的其余部分匹配,以便文本字段的底部锁定在键盘顶部。

我想为此使用自定义缓动功能,因为如果我只是为动画添加一个小延迟,它看起来并不正确。它压缩动画曲线,这意味着文本字段不会保持锁定在键盘顶部。

我尝试了一些参数化动画库,但是很难让他们使用Swift。

我发现许多资源适用于文本字段位于屏幕最底部的情况,例如this post。但不幸的是,他们无法轻易调整以解释底部标签栏。

1 个答案:

答案 0 :(得分:0)

如果你想在ios中的消息应用程序中实现效果,你可以这样做:

首先不要将文本字段直接放入视图层次结构中。

在viewController中覆盖canBecomeFirstResponder方法并从中返回true

override func canBecomeFirstResponder() -> Bool {
    return true
}

然后在视图控制器中覆盖inputAccessoryView方法,并返回要在键盘顶部显示的视图。

override func inputAccessoryView() -> UIView {
    return textField
}

注意:您必须创建textField并设置它。您可以将其创建为视图控制器的惰性属性