Ios 将动画与带有附件视图的键盘顶部同步

Ios 将动画与带有附件视图的键盘顶部同步,ios,objective-c,animation,Ios,Objective C,Animation,我有一个带有附件视图的UITextField。我还有另一个视图位于屏幕底部。我想让这个视图像键盘上显示的那样动画化,我已经多次使用ui键盘willshownotification。但是,这次有点特别,因为我希望底部视图跟随键盘顶部,而不是附件视图的顶部 显然,我已经尝试过这种解决方案: [UIView animateWithDuration:keyboardAnimationDuration delay:0 options:keyboardAnimationCurve animations:^{

我有一个带有附件视图的
UITextField
。我还有另一个视图位于屏幕底部。我想让这个视图像键盘上显示的那样动画化,我已经多次使用
ui键盘willshownotification
。但是,这次有点特别,因为我希望底部视图跟随键盘顶部,而不是附件视图的顶部

显然,我已经尝试过这种解决方案:

[UIView animateWithDuration:keyboardAnimationDuration delay:0 options:keyboardAnimationCurve animations:^{
        viewBottomConstraint.constant = keyboardHeight - accessoryViewHeight;
        [self.overviewViewController.view layoutIfNeeded];
} completion:nil];
keyboardAnimationDuration
keyboardAnimationCurve
keyboardHeight
都来自键盘通知的
userInfo
字典)

此解决方案为我提供了底部视图的正确结束位置,但动画稍微关闭,因为键盘(包括附件视图)必须在相同的持续时间内移动更长的距离(到附件视图顶部,而不是到键盘顶部)

我考虑过为我的底部视图计算相对动画持续时间,如下所示:

keyboardToAccessoryRatio = (keyboardHeight - accessoryViewHeight) / keyboardHeight
relativeDuration = keyboardAnimationDuration * keyboardToAccessoryRatio
然后让动画以
keyboardAnimationDuration-relativeDuration
的延迟开始。然而,这只有在键盘使用
uiviewmanimationoptioncurvelinear
曲线时才能很好地工作,但实际上,它使用的是
uiviewmanimationcurveeaseinout

那么还有其他建议吗


另外,我不能简单地将我的按钮视图添加到附件视图中,因为它们实际上位于单独的视图控制器中。动画是作为
UIViewControllerAnimatedTransitioning
类中自定义转换的一部分完成的。

最后我放弃并添加了附件视图作为常规视图,该视图是我按照键盘创建的。

最后我放弃并添加了附件视图作为常规视图,该视图是我按照键盘创建的。

请理解,您可以对动画(如0.5或1)进行一些延迟,然后查看它是否适合。由于动画曲线,即使经过仔细计算,它也不适合。据我所知,您可以对动画(如0.5或1)进行一些延迟,然后查看它是否适合。由于动画曲线,即使经过仔细计算,它也不适合。