2 Stimmen

UIView reagiert nicht auf Berührungen nach 'removeFromSuperview'

In meiner app delegieren, ich erstelle eine Registerkarte-Controller mit einem Bündel von Ansicht-Controller für es und dann eine separate UIViewController, die ich als die oberste Ansicht zeigen, bis der Benutzer eine bestimmte Aktion ausführt.

Ich bin zunächst meine Registerkarte Controller mit dem zweiten Controller abdecken, aber schließlich, der zweite Controller wird über "removeFromSuperview" entlassen. Jedoch, nachdem dies geschieht, wird die Registerkarte Controller-Ansicht nicht auf alle taps oder jede UI-Interaktion reagieren. Meine App ist nicht aufgehängt, wie ich die Verarbeitung passieren sehen kann.

Gibt es eine Möglichkeit, den Tab-Controller zum De-facto-Responder zu machen, nachdem die oberste Ansicht beendet wurde?

Hier ist, wie ich zunächst beide Viewcontroller erstellen:

{
// 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];
}

Wie die oberste Ansicht abgetan wird:

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

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

Ich möchte nicht, dass die oberste Ansicht so aussieht, als würde ich einen modalen Dialog hinzufügen, und ich möchte, dass der Bildschirm da ist, sobald die App gestartet wird.

0voto

John Wang Punkte 6106

Ich glaube, Ihre Tabbar-Ansicht ist immer noch auf Platz 2 der Liste. Haben Sie versucht, hinzuzufügen:

bringSubviewToFront :

Verschiebt die angegebene Unteransicht in den vor seine Geschwister. - (void)bringSubviewToFront:(UIView *)view Parameter view Die Unteransicht, die nach vorne verschoben werden soll. Verfügbarkeit * Verfügbar in iPhone OS 2.0 und höher. Siehe auch * - sendSubviewToBack: Deklariert in UIView.h

Wenn das nicht hilft, müssen Sie vielleicht Ihre Tabbar als First Responder einstellen.

- (BOOL)canBecomeFirstResponder {
     returnYES;
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X