質問

モーダルビューのアニメーションの終わりを検出するには(解雇するとき)? (私は自分で作成されていないmfmailcomposeviewcontrollerについて話している...)

ありがとう

役に立ちましたか?

解決

モーダルビューコントローラーには -viewDidDisappear: 画面からビューが削除されるたびに自動的に呼び出される方法。この方法をModal Viewコントローラーでオーバーライドして、好きなことをすることができます。

また、実装を検討することもできます -viewDidAppear: モーダルビューによって表示されるビューが消えるビューコントローラー内のメソッド。

他のヒント

mfmailcomposeviewcontrollerをサブクラス化して、それをオーバーロードできます -viewDidDisappear:.

@interface MyCtrler : MFMailComposeViewController
@end
@implementation MyCtrler
-(void)viewDidDisappear:(BOOL)animated {
   [super viewDidDisappear:animated];
   // do anything you like
}
@end

モーダルビューを却下した後、モーダルビューが実際になくなったことが確信している場合にのみ、何かをする必要がありました(完全にdealloc-ed)。だから、Modal Viewのviewdiddisappearとその友人たちは私には時期尚早でした。

私が見つけた最も簡単なのは、NSTIMERでコードを遅らせることでした。モーダルビューが代表者を呼び出し、デリゲートがモーダルビューを削除することを呼び出すと、モーダルビューがなくなったときに実行されるコードをキューアップします。タイミングは300msまたは400msのようなものでした。 (どこかから実際のタイミングを取得する方法はありますか?)

通常、アニメーションが完了したときに通知されると、送信してデリゲートを設定します SetanimationDelegate: uiviewクラスに。

VCが使用されて却下されたとき [someVC dismissModalViewControllerAnimated:YES] アニメーションデリゲートを設定することはできませんが、代わりに送信してVCのビューの独自のアニメーションを実行する場合 できる デリゲートを設定し、アニメーションが完了したら通知されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top