UITextField не работает внутри UITabBarController с IOS5 - PullRequest
0 голосов
/ 04 ноября 2011

Существуют ли какие-либо ограничения на UITextField при размещении внутри вкладки, которая не является основным интерфейсом. Другими словами

Рабочий сценарий 1. Приложение на основе вкладок с одним из представлений, имеющим UITextField. 2. Tabview является основным интерфейсом для приложения.

отлично работает без глюков

Неработающий сценарий. 1. Приложение на основе вкладок, но представление вкладок не является основным. 2. Существует еще одно представление MainWindow.xib с некоторой вводной анимацией, которое затем вызывает и отображает вкладку. 3. UITextfield в таких вкладках не работает - особенно в IOS5. Оба метода работают нормально до IOS 4.3 4. Текстовое поле видно, но при нажатии на него не отображается клавиатура. Если я вызываю becomeFirstResponder с помощью кода, клавиатура отображается, но не реагирует.

Любые предложения

Код довольно стандартный

в AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    tabViewController = [[tabView alloc] initWithNibName:@"tabView" bundle:nil];
    [self.window addSubview:tabViewController.view];     
     //self.window.rootViewController=tabViewController
    [self.window makeKeyAndVisible];    
    return YES;    
}

tabViewController имеет ProfileViewController с простым текстовым полем.

Текстовое поле работает нормально, если я делаю это

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

tabViewController = [[tabView alloc] initWithNibName:@"tabView" bundle:nil];
profileView=[[Profile alloc] initWithNibName:@"Profile" bundle:nil];
//calling the view directly without using a tab view
[self.window addSubview:profileView.view];     
[self.window makeKeyAndVisible];    
return YES;    

}

Есть ли что-то еще, что нужно сделать для IOS5, когда представление вкладок не является основным интерфейсом? Я несколько дней ломал голову над этим, все мои приложения с UITextfield внутри вкладки не могут использоваться в ios5. Любая помощь высоко ценится

Редактировать: загруженный файл проекта http://www.mediafire.com/?xjuc4udlph78saj - XCode 4.2 на Lion

Это простой проект с двумя вариантами: создание tabbarcontroller из самого делегата, и у меня также есть представление (tabView) с tabbarcontroller. Для панели вкладок есть 2 вида FirstViewController & SecondViewController. В AppDelegate.m при использовании метода 1 (создайте UITabBarController внутри AppDelegate, все в порядке). Если я решу добавить подпредставление tabView, поле uitext не будет работать. На самом деле я не занимался выпуском объектов, так как это тестовый проект, и он только для подтверждения концепции.

Спасибо

1 Ответ

0 голосов
/ 21 ноября 2011

После нескольких часов поисков, игр и экспериментов.Я нашел решение.

Это, кажется, происходит, когда в приложении более одного UIWindow.В моем случае мне показалось, что

  • AppDelegate начинается с собственного UIWindow. После воспроизведения анимации при запуске я пытаюсь отобразить другой вид с помощью tabbarcontroller иОкно для хранения UITabBarController

    Второе окно (даже после установки makeKeyAndVisible), кажется, блокирует события клавиатуры до UITextField внутри UITabBarController.

Для меня сработало следующее: вместо того, чтобы иметь второй вид с собственным окном, у меня был UITabBarController и UIView / UIWindow (это радипредставление по умолчанию для файла пера).И когда мне нужно было показать вкладку, я использовал это

[[[UIApplication sharedApplication] keyWindow] setRootViewController:TabBar]

Я не уверен в лучшем способе, но это сработало для меня.Короче говоря, я обнаружил, что наличие другого UIWindow внутри приложения вызывает проблемы с becomeFirstResponder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...