Контроллер UIView Sub Uiview не обнаруживает прикосновения - PullRequest
1 голос
/ 16 мая 2011

Привет, ребята, у меня есть UIViewController, RootUIViewController, ссылающийся на другой UIViewController, MainMenuViewController.

Я добавляю представление MainMenuViewController как подпредставление к представлению RootUIViewController. Проблема в том, что сенсорные события не перехватываются в методе MainMenuViewController touchesBegan.

Соответствующий код ниже. Вывод при прикосновении к экрану показывает «прикоснулся к корневому контроллеру просмотра». Желаемый результат, который я хочу получить, - это событие касания, которое должно быть перехвачено в MainMenuViewController и отображено «затронуто в контроллере корневого представления». Что я здесь упускаю / делаю неправильно?

RootUIViewController.m

  - (void)viewDidLoad {
    [super viewDidLoad];

    MainMenuViewController* mainMenuViewController = [[MainMenuViewController alloc] initWithNibName:@"MainMenuView" bundle:nil];

    m_mainMenuViewController = mainMenuViewController;
    [self.view addSubview:m_mainMenuViewController.view];
    [mainMenuViewController release];

}

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
        NSLog(@"touched at root view controller");

    }

MainMenuViewController.m

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"touched at main view controller");

}

1 Ответ

2 голосов
/ 16 мая 2011

Рад, что вам удалось решить проблему управления памятью.Хочу добавить предупреждение, что

[self.view addSubview:m_mainMenuViewController.view];

проблематично и, на мой взгляд, плохая идея.Подвиды представления UIViewController не должны управляться их собственным UIViewController.Эти подпредставления могут иметь контроллеры, но они не должны быть подклассами UIViewController, потому что они никогда не будут надежно вести себя точно так, как вы ожидаете от UIViewController, и это может вызвать головную боль для вас позже.Лучше принять ограничения классов и API, которые мы получаем от Apple, и спроектировать поддерживаемое, надежное решение.

Я попытался подробно рассказать об этом здесь: Злоупотребление UIViewControllers , надеюсь, этонекоторая помощь.

...