- Создание проекта iPhone на основе представления с использованием
Xcode
(я использую xcode 4, но, полагаю, xcode 3 будет вести себя так же)
имеет следующий код в applicationDidFinishLaunchingMethod
:
-(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 клавиатура исчезает, оставляя текстовое поле сфокусированным (курсор все еще мигает)
на самом деле мой проект использует другое окно для иерархии представления текстового поля, но похоже, что это происходит даже в том же окне. Я также попытался поместить текстовое поле в представление, принадлежащее контроллеру представления, и добавил это представление в окно с теми же результатами.
Apple принимает этот метод ([UIWindow addSubView:]) для добавления представления контроллера представления на экран, поэтому для меня это выглядит как ошибка