MFMailComposeViewControllerを実装しましたが、問題が発生しました。dismissModalViewControllerAnimatedはスーパービューから削除する前に最初にアニメーション化する必要がありますか?
私のスーパービューでは、ボタンを押すと、アプリ内メールが表示されます。 ユーザーがメールフォームを送信または終了するまで、すべて正常に動作します。
[self.view removeFromSuperview];
を実行する前に、アニメーション(電子メールフォームを閉じる)が最初に終了するまで待つ必要があるようです。アニメーションが終了する前にこの行が実行されても何も起こらず、ビューが削除されない場合、現在のUIViewが削除されないため、画面上の何もタップできません。クラスを呼び出す
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
[self dismissModalViewControllerAnimated:YES];
// Removes the view so that delegate is passed back to the superview
[self.view removeFromSuperview];
}
私のスーパーアクション:
- (IBAction)buttonPressedSendMail {
MailComposerViewController *mailComposer = [[MailComposerViewController alloc] init];
[self addSubview:mailComposer.view];
[mailComposer sendMail:nil];
}
[[self view] setHidden:YES];
はUIViewのを隠すためには動作しますが、私は、これはそれを行うための正しい方法だとは思いません。
ありがとうございました。それが私がエラーを見つけるためにしたものです。しかし、これが最良の方法であるかどうかは分かりません。 – AReality
別の方法でコードを更新して、View Controllerを終了しました。 –
モーダルビューコントローラが正しく表示されていません。非常に具体的な必要がある場合を除き、私はXaviの答えのコードに従います。 –