0

MFMailComposeViewController正しく理解しているかどうかはわかりません。既存のビューを持つビューコントローラーが画面に表示されることを期待しています。FTViewController のビューが表示されます。しかし、メール作成者は表示されません。

元の質問を最小限に単純化しました。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.

        FTViewController *vc = [[FTViewController alloc]init];
        self.window.rootViewController = vc;
    ..
    }

FTViewController.m 内

- (void)viewDidLoad
{
    [super viewDidLoad];
    FTTest *test = [[FTTest alloc] init];
    [test testmeup];
}

FT テスト:

#import <MessageUI/MessageUI.h>

@interface FTTest : UIViewController <MFMailComposeViewControllerDelegate>

@implementation FTTest

- (void)testmeup
{
    BOOL ok = [MFMailComposeViewController canSendMail];
    if (!ok)
        return;
    MFMailComposeViewController* vc = [MFMailComposeViewController new];
    vc.mailComposeDelegate = self;
    [self presentViewController:vc animated:YES completion:nil];
}
4

2 に答える 2

1

私は最終的に私の問題の解決策を見つけました。

同じコードを- (void)viewDidLoadアクション可能なメソッドに移動すると、魅力的に機能します。したがって、これを機能させるには、ユーザーが最初にボタンを押すか、アクションを実行する必要があります。

- (IBAction)gogogo:(id)sender
{
    FTTest *test = [[FTTest alloc] init];
    [test testmeup];
}

Apple がこれを行ったのは、どのメールが送信されているかをユーザーが確実に把握できるようにするためだと思います。もともと、私はこのアプローチを利用して例外をキャッチし、このソリューションで説明されているように、電子メールで自分に送信するつもりでした。

多分私は何かを見落としているかもしれません、お気軽にコメントしてください。

于 2013-11-27T11:59:37.823 に答える
0

メールにメール アカウントはありますか? すべてのアカウントが無効化または削除された場合

[MFMailComposeViewController canSendMail] 

NO を返すと、何も出てきません。

于 2013-11-27T03:01:28.757 に答える