我试图模仿 UITextField
- Whatsapp 应用程序中的键盘关系。
大多数人都知道,有一个固定的 UITextField
当您点击 UITextField
时,屏幕底部会出现键盘。 .当键盘出现时,UITextField
粘在键盘上,它们非常顺畅地滑动在一起。
多次阅读有关在键盘下移动 View 的 Apple 文档页面。
到目前为止我尝试过的:
setFrame:
和 setContentOffset:animated:
动画块中的方法。没有像预期的那么好。 UIViewAnimationCurve
键盘动画的值为 7,我找不到它的含义 UIViewAnimationCurve
只有 4 个整数枚举类型。我认为键盘动画的动画曲线没有提供给开发人员,希望我是错的。 UIViews
,一个固定在底部,另一个是定制的inputAccessoryView
这将隐藏在固定的下方,因为它具有较低的 zPosition
值(value)。因此,用户不会看到 inputAccessoryView
正在从屏幕外部出现,但固定 View 被键盘向上推。但是又没用。换 zPosition
值不会改变任何东西。 最后,我认为 Whatsapp 可能不是使用系统键盘,而是自定义键盘。但如果是这种情况,这是一个非常糟糕的设计选择,因此该选项被淘汰。
任何人都知道 Whatsapp(或环聊)是如何实现的?
最佳答案
事实证明,最直接的方法是正确的方法。
我应该听听keyboardWillShow
/keyboardWillHide
通知和 animateWithDuration:
当它们被触发时。我错过的一点是类型转换 UIViewAnimationCurve
进入 UIViewAnimationOptionCurve
通过移动 (<<16)。
NSDictionary *notification = [aNotification userInfo];
UIViewAnimationOptions curveValue = [[info objectForKey:UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue] << 16;
...
[UIView animateWithDuration:{animation duration}
delay:0
options:curveValue
animations:^{
//animation code
}
completion:nil];
关于ios - TextField 不会被键盘平滑地向上推,就像在 Whatsapp 和 Hangouts 中一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23383916/