我试图在Whatsapp应用程序中模仿UITextField-keyboard关系。正如大多数人所知道的,屏幕底部有一个固定的UITextField,当您点击UITextField时键盘就会出现。当键盘出现时,UITextField坚持键盘,他们一起滑行非常顺利。
阅读苹果的文档页面,这是关于在键盘下移动视图的几次。
到目前为止我尝试过的:
setFrame:和setContentOffset:animated:方法。效果不像预期的那么好。键盘动画的UIViewAnimationCurve值是7,我找不到它的含义,因为UIViewAnimationCurve只有4个整数枚举类型。我认为键盘动画的动画曲线没有提供给开发者,我希望我错了。UIViews,一个是在底部固定的,另一个是自定义的inputAccessoryView,它将隐藏在固定的一个下面,因为它的zPosition值较低。因此,用户不会看到inputAccessoryView是从屏幕外出现的,但是固定视图被键盘推高了。但又没用了。更改zPosition值不会改变任何事情。最后,我想Whatsapp可能不是使用系统键盘,而是使用自定义键盘。但是如果是这样的话,这是一个非常糟糕的设计选择,所以这个选项被删除了。
有人知道Whatsapp (或Hangout)是如何实现这一点的吗?
发布于 2014-04-30 12:15:22
最直截了当的做法是正确的方法。
当keyboardWillShow/keyboardWillHide通知和animateWithDuration:被触发时,我应该听它们。我错过的重点是通过转换( UIViewAnimationCurve )将UIViewAnimationOptionCurve转换成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];发布于 2014-05-05 13:21:29
值'7‘不是2的幂,所以它不是一个特定的动画值,而是多个动画值的和(或位)。解决办法(为我工作)是:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:[info[UIKeyboardAnimationDurationUserInfoKey] floatValue]];
[UIView setAnimationCurve:[userInfo[UIKeyboardAnimationCurveUserInfoKey] intValue]];
// set view frame here
[UIView commitAnimations];祝你好运:)
https://stackoverflow.com/questions/23383916
复制相似问题