尝试订购内置的 UIAnimations,但没有太大成功
Posted
技术标签:
【中文标题】尝试订购内置的 UIAnimations,但没有太大成功【英文标题】:Trying to order built-in UIAnimations, not having much success 【发布时间】:2009-08-03 03:25:32 【问题描述】:好的,我的 iPhone 应用中有一个如下所示的屏幕: (来源:matthewcave.com)
当触摸添加注释单元格时,我希望键盘消失,然后我希望它以模态方式显示编辑注释屏幕(它也有一个键盘,但我希望它在屏幕上重新显示动画)。
现在它可以立即为所有内容设置动画(键盘永远不会消失,它只是改变外观,并且新视图以模态方式显示动画,似乎在键盘下方)。整个效果运行正常,但有点生涩,我认为在屏幕上弹出模态视图之前滑下键盘会更顺畅。我已经看到其他应用程序做我想做的事情(例如事情),所以我知道这是可能的。
谁能指出我正确的方向,让每个过渡单独发生,而不是一次发生?
编辑:根据要求,这是我正在使用的一些代码。不幸的是,它在 Objective C 中的读法与在英语中的读法几乎完全相同。
UITableViewController* tableViewController = (UITableViewController*)tableView.dataSource;
AddNotesViewController* addNotesViewController = [[AddNotesViewController alloc] initWithWine:[self myWine]];
UINavigationController* addNotesNavController = [[[UINavigationController alloc] initWithRootViewController:addNotesViewController] autorelease];
// tell the name override cell to resign if they need to
[(NewWineViewController*)tableView.dataSource resignNameCell];
//I'd like the animation caused by the resign to complete before proceeding.
[tableViewController.navigationController presentModalViewController:addNotesNavController animated:YES];
【问题讨论】:
你能发布你现在拥有的代码的sn-ps吗? 【参考方案1】:我认为这应该可行:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITextField *textField = // the field that the keyboard is up for
[textField resignFirstResponder];
NSTimeInterval delay = 2.0; // i.e., until keyboard has disappeared
[self performSelector: @selector(transitionToEditNotesScreen) withObject: nil afterDelay: delay];
- (void) transitionToEditNotesScreen
// the code you have above to bring on the modal view controller
在控制器中为您的编辑笔记屏幕添加以下代码。如果您希望在模态视图完全出现后重新启用键盘动画,请将其放在 viewDidAppear 中。否则,将相同的代码放在 viewDidLoad 或 viewWillAppear 中。
- (void) viewDidAppear: (BOOL) animated
UITextField *textField = // the field you want the keyboard to be up for
[textField becomeFirstResponder];
【讨论】:
只是好奇——你选择 viewDidAppear 还是 viewWillAppear?以上是关于尝试订购内置的 UIAnimations,但没有太大成功的主要内容,如果未能解决你的问题,请参考以下文章