gpt4 book ai didi

ios - 如何在 iOS 7 上模仿键盘动画将 "Done"按钮添加到数字键盘?

转载 作者:IT王子 更新时间:2023-10-29 07:52:01 24 4
gpt4 key购买 nike

我一直在做类似的事情来模仿旧版 iOS 上的键盘动画。

CGRect keyboardBeginFrame;
[[note.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&keyboardBeginFrame];
self.doneKeyboardButton.frame = CGRectMake(0, (keyboardBeginFrame.origin.y + keyboardBeginFrame.size.height) - 53, 106, 53);
[[[[UIApplication sharedApplication] windows] lastObject] addSubview:self.doneKeyboardButton];

CGPoint newCenter = CGPointMake(self.doneKeyboardButton.superview.frame.origin.x + self.doneKeyboardButton.frame.size.width/2,
self.doneKeyboardButton.superview.frame.size.height - self.doneKeyboardButton.frame.size.height/2);

[UIView animateWithDuration:[[note.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]-.02
delay:.0
options:[[note.userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]
animations:^{
self.contentView.frame = CGRectOffset(self.contentView.frame, 0, -TextFieldViewMovement);
self.doneKeyboardButton.center = newCenter;
}
completion:nil];

但是,这在 iOS7 上已停止工作。似乎返回的值不再完全正确,并且“完成”按钮不再完全模仿键盘显示动画。

最佳答案

在 iOS 7 中,键盘使用了一种新的、未记录的动画曲线。虽然有些人注意到对动画选项使用未记录的值是有效的,但我更喜欢使用以下内容:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:[notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
[UIView setAnimationCurve:[notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue]];
[UIView setAnimationBeginsFromCurrentState:YES];

// work

[UIView commitAnimations];

虽然建议使用基于 block 的动画,但从键盘通知返回的动画曲线是 UIViewAnimationCurve,而您需要传递给基于 block 的动画的选项是 UIViewAnimationOptions。使用传统的 UIView 动画方法允许您直接通过管道输入值。最重要的是,这将使用新的未记录的动画曲线(整数值 7)并使动画与键盘匹配。而且,它在 iOS 6 和 7 上也同样适用。

关于ios - 如何在 iOS 7 上模仿键盘动画将 "Done"按钮添加到数字键盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18837166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com