2

Ich verwende einen UIActivityViewController. Wenn der Benutzer meine Anwendung an den Hintergrund auf dem iPhone sendet (wenn sie die Home-Taste drücken, usw.), muss ich den erstellten UIActivityViewController und alle Kinder entfernen, die von ihm stammen könnten. Das heißt, wenn der Benutzer die Option "Mail" oder "Message" auf dem UIActivityViewController auswählt, muss ich die Ansicht (View Controller?) Entfernen, die als Ergebnis dieser Aktion erscheint.Abgelehnte Kindansichten von UIActivityViewController

Ich habe den folgenden Code versucht, indem es gefunden, dass es nur den ursprünglichen UIActivityViewController und keine der zusätzlichen Ansichten entfernt, die es hervorbrachte.

[_myActivityController dismissViewControllerAnimated:NO completion:nil]; 

Antwort

1

Versuchen Sie dies in Ihrer AppDelegate AnwendungDidEnterBackground. Schließen Sie den obersten View-Controller ab, der angezeigt wird. Hoffe, das wird dir helfen.

- (void)applicationDidEnterBackground:(UIApplication *)application { 

    UIViewController *mytopController = [UIApplication sharedApplication].keyWindow.rootViewController; 
    while (mytopController.presentedViewController) 
    { 
     mytopController = mytopController.presentedViewController; 
     [mytopController dismissViewControllerAnimated:NO completion:nil]; 
    } 

} 
+0

Dies funktioniert. Ich war überrascht, dass dies meinen Root-View-Controller nicht entfernt hat. Ich nehme an, der Root-Controller zeigt auf den UIActivityViewController oder sein Kind unter der presendedViewController-Eigenschaft und auf diese Weise gelang es Ihnen, dieses Element zu entfernen. Wie auch immer, gutes Zeug. –

+0

Hinweis: Diese Lösung entfernt nicht alle Elemente, wenn der Benutzer im UIActivityViewController auf "more" klickt. Um alle Elemente ordnungsgemäß zu entfernen, entfernen Sie 'mytopController = mytopController.presentedViewController;' und ersetzen Sie '[mytopController ablehnenViewControllerAnimated: NO completion: nil];' mit '[mytopController.presentedViewController ablehnenViewControllerAnimated: NO completion: nil];' –