2011-05-16 2 views
1

Hé les gars, j'ai un UIViewController, RootUIViewController référençant un autre UIViewcontroller, MainMenuViewController.Le contrôleur UIView de uiview ne détecte pas les touchers

En ajoutant la vue de MainMenuViewController en tant que sous-vue à la vue de RootUIViewController. Le problème est que les événements tactiles ne sont pas interceptés dans la méthode touchesMenu MainMenuViewController.

Le code pertinent est ci-dessous. La sortie lorsque vous touchez l'écran montre "touché au contrôleur root". Le résultat souhaité est l'événement tactile à attraper dans le MainMenuViewController et l'affichage "touché au contrôleur racine". Qu'est-ce que je manque/fais mal ici?

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"); 

} 
+0

Qu'essayez-vous exactement de faire? – rptwsthi

+0

Le code a l'air correct. Vérifiez si 'userInteractionEnabled' de' m_mainMenuViewController.view' est réglé sur 'NO'. –

+0

@rptwsthi Mon but est que lorsque je touche la vue (m_mainMenuViewController.view) l'événement sera attrapé dans la méthode touch_e m_mainMenuViewController touchesBegan. @Deepak merci mal donner un coup – valmo

Répondre

2

vous étiez Heureux en mesure de résoudre votre problème de gestion de la mémoire. Je veux ajouter un avertissement

[self.view addSubview:m_mainMenuViewController.view];

est problématique et, à mon avis, une mauvaise idée. Les sous-vues de la vue d'UIViewController ne doivent pas être gérées par leur propre UIViewController. Ces sous-vues peuvent avoir des contrôleurs mais elles ne devraient pas être des sous-classes de UIViewController, car elles ne se comporteront jamais de manière fiable exactement comme vous pourriez l'attendre d'un UIViewController et cela risque de vous causer des maux de tête plus tard. Mieux vaut accepter les limites des classes et des API que nous recevons d'Apple et concevoir une solution supportée et fiable.

J'ai essayé de couvrir ceci en détail ici: Abusing UIViewControllers, j'espère que c'est un peu d'aide.