注意:
查看已被接受的答案(不是最高票答案),适用于iOS 4.3。
本问题涉及iPad键盘中发现的一种行为,即如果在带有导航控制器的模态对话框中显示,它将拒绝被解除。
基本上,如果我使用以下代码行呈现导航控制器,则会出现该问题:
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
键盘无法关闭。如果我注释掉这一行,键盘就能正常关闭。
...
我有两个文本框,用户名和密码;用户名有一个“下一个”按钮,密码有一个“完成”按钮。如果我在模态导航控制器中呈现它,键盘将无法关闭。
有效
broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
[self.view addSubview:b.view];
无效
broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
UINavigationController *navigationController =
[[UINavigationController alloc]
initWithRootViewController:b];
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[b release];
如果我删除导航控制器部分,并将 'b' 自身作为模态视图控制器呈现,那么它就能正常工作。是导航控制器造成的问题吗?
正常工作broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
b.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:b animated:YES];
[b release];
工作正常
broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
UINavigationController *navigationController =
[[UINavigationController alloc]
initWithRootViewController:b];
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[b release];
UINavigationController
类别中解决了。干杯。 - Lorenzo BresignFirstResponder
被执行,但键盘仍然显示。我的情况(presentationFormSheet与navig contrllr)与您的完全相同。非常感谢! - sErVerdevIL