UIView не отвечает на прикосновения после 'removeFromSuperview' - PullRequest
2 голосов
/ 24 января 2010

В моем делегате приложения я создаю контроллер вкладок с кучей контроллеров представления для него и затем отдельный UIViewController, который я показываю как самый верхний вид, пока пользователь не выполнит определенное действие.

Сначала я закрываю свой контроллер вкладок вторым контроллером, но в конце концов второй контроллер удаляется с помощью команды «removeFromSuperview». Однако после того, как это произойдет, представление контроллера вкладок не будет реагировать на любые нажатия или любое взаимодействие с пользовательским интерфейсом. Мое приложение не зависло, так как я вижу, как происходит обработка.

Есть ли способ сделать контроллер вкладок де-факто ответчиком после отклонения самого верхнего вида?

Вот как я изначально создаю оба контроллера представления:

{
// main navigation controller is a tab bar
UITabBarController *tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects: controller1, 
                                    controller2,
                                    controller3, nil];

// Add the tab bar to the view
[window addSubview:tabBarController.view];


// Creating the 2nd navigation controller - covering up the tab bar 
// temporarily
UIViewController *viewController  = [[MySecondViewController alloc] 
                                        initWithNibName:@"SomeView" 
                                        bundle:nil];

UINavigationController *navController = [[UINavigationController alloc]
            initWithRootViewController:viewController];

[viewController release];

// Configure and show the second navigation controller
[window addSubview:[navController view]];       

// Make everything visible
[window makeKeyAndVisible];
}

Как отклоняется самый верхний вид:

@interface MySecondViewController : UIViewController
{
}
-(void)dismissMe;
@end

@implementation MySecondViewController
-(void)dismissMe
{
    // Here, the this view is getting removed
    [self.view removeFromSuperview];        
}
@end

Я не хочу, чтобы самый верхний вид выглядел так, как будто я добавлял модальное диалоговое окно, и хотел бы, чтобы экран появлялся сразу после запуска приложения.

1 Ответ

0 голосов
/ 24 января 2010

Я думаю, что ваш вид вкладки по-прежнему "2-й" в списке. Вы пробовали добавить:

bringSubviewToFront

Перемещает указанное подпредставление в перед его братьев и сестер. - (void) yieldSubviewToFront: (UIView *) представление просмотра параметров Подвид, чтобы перейти на фронт. Доступность * Доступно в iPhone OS 2.0 и более поздних версиях. Смотрите также * - sendSubviewToBack: объявлено в UIView.h

Если это не поможет, возможно, вам нужно установить панель вкладок в качестве первого ответчика.

- (BOOL)canBecomeFirstResponder {
     returnYES;
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...