このような以前にいくつかの質問を見ましたが、受け入れられた回答がなく、必要に応じてすべてを実装したため、次のような問題に直面し続けています:メールコンポーザーを表示しますが、キャンセルをクリックすると、コンポーザービューがフリーズします。これは、ドラフトの保存/削除アクションシートが表示されているフレームの外に表示されているためだと思います。はい、mailComposeDelegateを現在のView Controllerに設定し、ユーザーが処理していない同様の質問をいくつか読みました。(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
キャンセル時に作曲家を解任するよう委任します。私もそれを処理しましたが、iPhoneバージョンのユニバーサルアプリの画面の表示領域にアクションシートが表示されない理由を一生理解できないようです。メールコンポーザーをNSLoggedとしてモーダルに表示するビューコントローラーのビューフレームは(0,0,320,480)です。私のアプリはユニバーサルで、メールコンポーザーはiPadで完璧に動作します。以下は、iPhoneSimulator5.1で実行されているコンポーザービューのスクリーンショットです。-
コンポーザーを表示するコードは次のとおりです。
-(IBAction)mailButtonPressed:(id)sender {
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"Subject"];
[controller setMessageBody:@"Test" isHTML:YES];
[controller setToRecipients:nil];
if(controller) {
[self presentModalViewController:controller animated:YES];
[controller release];
}
}
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError*)error
{
[self dismissModalViewControllerAnimated:YES];
}