2012-03-29 13 views
-1

Ich bin dabei, eine Facebook-ähnliche Seitennavigation für eine iPhone App zu implementieren. Ich kann es ohne Probleme ein- und ausblenden, aber wenn ich auf eine Schaltfläche oder irgendetwas in dieser Navigationsansicht klicken möchte, passiert nichts.Ziel C: Subview nicht anklickbar

Hier ist der Code für meine Seite Navigationsansicht ich in viewDidLoad initialisieren:

self.sideNavigationView = [[UIView alloc] initWithFrame:CGRectMake(self.navigationController.view.frame.size.width, 20, 238, self.navigationController.view.frame.size.height-20)]; 
[self.navigationController.view addSubview:self.sideNavigationView]; 

Dann habe ich die folgende Methode in Stössel:

mehrere Kombinationen von userInteractionEnabled
- (IBAction) openMenuBar: (id) sender {  
if (!self.sideNavigationIsExpanded) { 
    self.sideNavigationView.frame = CGRectMake(self.navigationController.view.frame.size.width, 20, 238, self.navigationController.view.frame.size.height-20); 

} 
CGRect destination = self.navigationController.view.frame; 
CGRect sideNavigationDestination = self.sideNavigationView.frame; 

sideNavigationDestination.size.width = 238; 


// Slide back 
if (self.sideNavigationIsExpanded) {  
    sideNavigationDestination.origin.x = self.view.frame.size.width; 
    destination.origin.x = 0; 
    sideNavigationDestination.origin.y = 20; 
    self.sideNavigationIsExpanded = NO; 
} 
// Slide in 
else { 
    sideNavigationDestination.origin.x = self.view.frame.size.width; 
    destination.origin.x = - sideNavigationDestination.size.width;    

    sideNavigationDestination.origin.y = 20; 
    self.sideNavigationIsExpanded = YES; 

    self.sideNavigationView.hidden = NO; 
} 


[UIView animateWithDuration:0.25 animations:^{ 

    self.sideNavigationView.frame = sideNavigationDestination; 
    self.navigationController.view.frame = destination;   


} completion:^(BOOL finished) { 
    if (!self.sideNavigationIsExpanded) 
     self.sideNavigationView.hidden = YES; 
    self.view.userInteractionEnabled = !self.sideNavigationIsExpanded; 
    self.sideNavigationView.userInteractionEnabled = self.sideNavigationIsExpanded;   
}]; 

    } 

Ich versuchte = JA bei jeder Unteransicht ... Nichts geändert ... Könnte es sein, dass die Unteransichten meiner sideNavigationView nicht auswählbar sind, weil ich sie bei der Initialisierung nicht sehen kann? Ich habe versucht, es mit einem Rahmen in Sicht (CGRectMake (0,0,238,300)) zu initialisieren und das hat funktioniert. -_- Also, wie könnte ich mein Problem lösen?

Antwort

0

Als sideNavigationView ist ein Subview self.view dann diese Zeile:

self.view.userInteractionEnabled = !self.sideNavigationIsExpanded; 

überhaupt berührt vom Erreichen Ihrer sideNavigationView verhindern. Eine Ansicht wird ihre Unteransichten nicht berühren, wenn ihre eigene userInteractionEnabled-Eigenschaft auf NO gesetzt ist, obwohl Sie die Eigenschaft der Unteransicht in der nächsten Zeile auf YES gesetzt haben.

Bei der Initialisierung außerhalb des Bildschirms glaube ich nicht, dass dies einen Einfluss darauf hat, ob die Ansicht Berührungen erhalten kann, wenn sie wieder auf dem Bildschirm angezeigt wird.