注意:
从iOS 4.3开始,请参阅已接受的答案(不是最受欢迎的答案).
这个问题是关于在iPad键盘中发现的行为,如果在带有导航控制器的模态对话框中显示,它将拒绝被解雇.
基本上,如果我使用以下行显示导航控制器,如下所示:
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
Run Code Online (Sandbox Code Playgroud)
键盘拒绝被解雇.如果我注释掉这一行,键盘就会消失.
...
我有两个textFields,用户名和密码; username有一个Next按钮,密码有一个Done按钮.如果我在模态导航控制器中显示它,键盘将不会消失.
作品
broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
[self.view addSubview:b.view];
Run Code Online (Sandbox Code Playgroud)
什么都不行
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];
Run Code Online (Sandbox Code Playgroud)
如果我删除导航控制器部件并将"b"作为模态视图控制器单独显示,则可以正常工作.导航控制器是问题吗?
作品
broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
b.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:b animated:YES];
[b release];
Run Code Online (Sandbox Code Playgroud)
作品
broken *b = [[broken alloc] initWithNibName:@"broken" bundle:nil];
UINavigationController *navigationController =
[[UINavigationController …Run Code Online (Sandbox Code Playgroud) 我有一个故事板,其中包括视图之间的导航.来回,也有可能一直跳到主屏幕.
基本上,它的工作原理如下:
当用户从视图1移动到视图2时,键盘和一切都很好地工作.但是,当从视图3移动到视图2,或从视图3移动并从头重新开始时,键盘不显示.
在代码中,我在viewDidAppear方法中成为了FirstResponder.此外,它将在加载视图3时resignFirstResponder.另一个有趣的事实是,当第二次调用becomeFirstResponder时,它确实返回NO(当它第一次返回YES时).此外,当返回到此视图时,即使文本字段是userInteractionEnabled,也无法选择文本字段.
我真的被困在这里,所以任何帮助都非常感谢.我已经看到了几个类似的问题,但没有找到解决方案: