Ios 排除ModalViewController激活键盘问题 使用Xcode创建一个基于视图的iPhone项目(我使用的是Xcode 4,但我想Xcode 3的行为也会一样)

Ios 排除ModalViewController激活键盘问题 使用Xcode创建一个基于视图的iPhone项目(我使用的是Xcode 4,但我想Xcode 3的行为也会一样),ios,uiviewcontroller,keyboard,Ios,Uiviewcontroller,Keyboard,将以下代码放入ApplicationIDFinishLaunchingMethod: -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. self.window.rootViewController

将以下代码放入
ApplicationIDFinishLaunchingMethod

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // Override point for customization after application launch.

  self.window.rootViewController = self.viewController;
  [self.window makeKeyAndVisible];

  self.viewController.view.backgroundColor = [UIColor redColor];
  UIViewController *modalVc = [UIViewController new];
  modalVc.view.backgroundColor = [UIColor greenColor];

[self.viewController presentModalViewController:modalVc animated:NO];

  UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(0, 20, 150, 30)];
  tf.borderStyle = UITextBorderStyleRoundedRect;
  [self.window addSubview:tf];
  [tf becomeFirstResponder];

  [self.viewController performSelector:@selector(dismissModalViewControllerAnimated:) withObject:NO afterDelay:3];

  return YES;
}
  • 运行应用程序时,您会注意到,在modalViewController关闭的瞬间,键盘消失,文本字段保持聚焦(光标仍在闪烁)

  • 实际上,我的项目正在为textfield视图层次结构使用另一个窗口,但看起来它甚至发生在同一个窗口上。我还尝试将textfield放入属于视图控制器的视图中,并将该视图添加到窗口中,结果相同

  • 苹果公司接受这种方法([UIWindow addSubView:])来将视图控制器的视图添加到屏幕上,所以我觉得这是一个bug

  • 问题:

  • 这是虫子吗?我应该向苹果公司报告吗
  • 是否有一个解决办法,让它不再关闭键盘

  • 好的,找到了一个解决方法:添加UIKeyboardWillHideNotification的观察者,然后在回调中调用resignFirstResponder,然后以0.01延迟成为FirstResponder。(performSelector:withObject:afterDelay)在呈现模态视图控制器时看起来也会发生同样的情况。在代码段中,将“[self.viewController presentModalViewController:modalVc animated:NO]”移动到[tf becomeFirstResponder]之后,这样键盘将根本不显示。有什么线索吗?