モーダルビューのアニメーションの終了をどのように検出できますか(却下した場合)?(私は自分で作成したものではないMFMailComposeViewControllerについて話しています...)
ありがとう
モーダルビューのアニメーションの終了をどのように検出できますか(却下した場合)?(私は自分で作成したものではないMFMailComposeViewControllerについて話しています...)
ありがとう
モーダルビューコントローラには-viewDidDisappear:
、ビューが画面から削除されるたびに自動的に呼び出されるメソッドがあります。モーダルビューコントローラでこのメソッドをオーバーライドして、好きなことを行うことができます。
-viewDidAppear:
また、モーダルビューが消えることによってビューが表示されるViewControllerにメソッドを実装することを検討することもできます。
MFMailComposeViewControllerをサブクラス化し、そのをオーバーロードできます-viewDidDisappear:
。
@interface MyCtrler : MFMailComposeViewController
@end
@implementation MyCtrler
-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
// do anything you like
}
@end
モーダルビューを閉じた後、モーダルビューが実際になくなった(完全に割り当てが解除された)ことが確実な場合にのみ、何かを行う必要がありました。したがって、モーダルビューでのviewDidDisappearとその友人は私には早すぎました。
私が見つけた最も簡単な方法は、NSTimerでコードを遅らせることでした。モーダルビューがそのデリゲートを呼び出し、デリゲートがモーダルビューの削除を呼び出すと、モーダルビューがなくなったときに実行されるコードもキューに入れられます。タイミングは300msや400msくらいでした。(どこかから実際のタイミングを取得する方法はありますか?)
通常、アニメーションが完了したときに通知を受けるには、setAnimationDelegate:をUIViewクラスに送信してデリゲートを設定します。
を使用してVCが却下され[someVC dismissModalViewControllerAnimated:YES]
た場合、アニメーションデリゲートを設定することはできませんが、代わりにNOを送信し、VCのビューの独自のアニメーションを実行すると、デリゲートを設定して、アニメーションが完了したときに通知を受けることができます。