2

私はUIActivityViewControllerを使用しています。ユーザーが自分のアプリケーションをiPhoneのバックグラウンドに送信すると(ホームボタンを押したときなど)、私は生成されたUIActivityViewControllerおよびそれから来た可能性のある子を削除する必要があります。つまり、ユーザーがUIActivityViewControllerで "Mail"または "Message"オプションを選択した場合、このアクションの結果として生成されたビュー(ビューコントローラ?)を削除する必要があります。UIActivityViewControllerの生成された子ビューを閉じます

私は、元のUIActivityViewControllerのみを削除し、それが生成した追加のビューは削除しないことで、次のコードを試しました。

[_myActivityController dismissViewControllerAnimated:NO completion:nil]; 

答えて

1

これをあなたのappDelegateアプリケーションIDEnterBackgroundで試してみてください。表示されている最上位のView Controllerを終了します。これがあなたを助けてくれることを願っています。

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

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

} 
+0

これは機能します。私はこれが私のルートビューコントローラを削除しなかったことに驚いた。私は、ルートコントローラがUIActivityViewControllerまたはpresentViewControllerプロパティを介してその子を指していると思います。これは、その要素を削除する方法です。いずれにせよ良いもの。 –

+0

注:ユーザーがUIActivityViewControllerで[more]をクリックすると、このソリューションですべての要素が削除されるわけではありません。すべての要素を適切に削除するには 'mytopController = mytopController.presentedViewController;を削除し、' [mytopController dismissViewControllerAnimated:NO completion:nil];を '[mytopController.presentedViewController dismissViewControllerAnimated:NO completion:nil];に置き換えます。 –

関連する問題