好的,我的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];
答案 0 :(得分:3)
我认为这应该有效:
- (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];
}