私は長い間遭遇した中で最も奇妙な問題を抱えています...そして私はアイデアを使い果たしました.
そのため、UIButton をタップすると起動される MFMailComposeViewController があり、メール コンポーザ ビューを正常に起動しています。私が割り当てた件名が表示されますが、to: または body フィールドが入力される前に、ウィンドウが点滅して消えます。次のエラーがスローされます。
viewServiceDidTerminateWithError: エラー Domain=XPCObjectsErrorDomain Code=2 「操作を完了できませんでした。(XPCObjectsErrorDomain エラー 2.)」
ここがクレイジーな部分です。MFMailComposeViewController も使用する別のアプリに切り替えてそのアプリを起動してから、自分のアプリに戻ってメール コンポーザを再度起動すると、問題なく動作します。私はそれを説明することはできません。
これは、 iPhone 5 以外のiOS 6 を実行している電話でのみ問題になるようです。
私は周りを検索しましたが、この同じ問題を経験した人を他に見つけることができないようです. 誰にも何か提案がありますか?
MessageUI.framework をリンクしましたが、これがシミュレーターまたはデバイスで機能していないこともわかりましたが、Security.framework もリンクするとシミュレーターで機能し始めましたが、まだ機能しませんデバイス上。
MFMailComposeViewController を起動するための私のコードは次のとおりです。
.h ファイル内
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
.m ファイル内
-(void)displayComposerSheet {
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Support Request"];
// Set up recipients
NSArray *toRecipients = [NSArray arrayWithObject:@"support@domain.com"];
[picker setToRecipients:toRecipients];
// Fill out the email body text
NSString *emailBody = @"\n\nEmail from iOS";
[picker setMessageBody:emailBody isHTML:NO];
[self presentModalViewController:picker animated:YES];
}
// Dismisses the email composition interface when users tap Cancel or Send. Proceeds to update the message field with the result of the operation.
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
[self dismissModalViewControllerAnimated:YES];
}
更新: UINavigationBar の外観デリゲートに渡した設定に絞り込んだと思います。カスタムフォントを使用していますが、それをオフにすると機能するようです...しかし、なぜiPhone5で機能するのでしょうか...