0

私は少し困っています。この問題に半日を費やしましたが、iOS6 でのすべての廃止やその他の問題の後、大きな結果はありませんでした。この iOS アプリには、ボタンを押した後、アプリが WebView のスクリーンショットを撮り、それをメールに添付して、そこからキャンセルするか、メールを送信してアプリに戻る通常のオプションがあるときに、メールを送信するオプションがあります。電子メールがポップアップする部分に到達しましたが、実際にはここで 2 つの問題があります。1 つは、キャンセルまたは送信のいずれかを押した後、電子メール ビューが閉じず、アプリが電子メール ビューで動かなくなることです。そして、私が抱えている2番目の問題は、添付される画像が単なる小さなアイコンであることです(認識されていない、または欠落しているように、青に疑問符が付いています...誰かが私を正しい方向に向けてもらえますか?私は夢中になる.私は' ネットを前後に調べましたが、うまくいきませんでした。残念ながら、多くの同様のスレッドがありますが、異なる問題は私の問題とは正確には関係ありません。申し訳ありませんが、事前に感謝します。これが私のコードです:

// in my LiveView.h file
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
#import <MessageUI/MessageUI.h>
#import "CamSetup.h"

@interface LiveView : UIViewController < MFMailComposeViewControllerDelegate ,   ADBannerViewDelegate >  
....
-(IBAction)shotAndSend:(id)sender;


// in my LiveView.m file:


- (void)mailComposer:(MFMailComposeViewController *)controller
      didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{
NSLog(@"in didFinishWithResult:");
switch (result) 
   {
    case MFMailComposeResultCancelled:
        NSLog(@"cancelled");
        break;
    case MFMailComposeResultSaved:
        NSLog(@"saved");
        break;
    case MFMailComposeResultSent:
        NSLog(@"sent");
        break;
    case MFMailComposeResultFailed: {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error sending mail",@"Error sending mail")
        message:[error localizedDescription] delegate:nil
                                              cancelButtonTitle:NSLocalizedString(@"test",@"test")
                                              otherButtonTitles:nil];
        [alert show];
        break;
    }
    default: break;
 }
  [self dismissViewControllerAnimated:NO completion:Nil];
   }

 -(IBAction)shotAndSend:(id)sender
{
   UIGraphicsBeginImageContext(_myWebView.frame.size);
   [_myWebView.layer renderInContext:UIGraphicsGetCurrentContext()];
   UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();

   NSData * imageData = UIImageJPEGRepresentation (image, 2.1);

  if ([MFMailComposeViewController canSendMail])
  {
     MFMailComposeViewController * mailComposer = [[MFMailComposeViewController alloc] init];
     mailComposer.mailComposeDelegate = self;
    [mailComposer addAttachmentData:imageData mimeType:@"image/jpeg" fileName:@"attachment.jpeg"];
    [mailComposer setSubject:@"A screenshot from my App"];
    [mailComposer setToRecipients:[NSArray arrayWithObjects:@"123@yexample.com", nil]];
    [self presentViewController: mailComposer animated:YES completion:NULL];
 }
 }
4

2 に答える 2

2

メソッドが間違っているため、コードが機能していません。あなたが持っている:

- (void)mailComposer:(MFMailComposeViewController *)controller
    didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error

ただし、次のようにする必要があります。

- (void)mailComposeController:(MFMailComposeViewController*)controller
    didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
于 2012-11-29T16:20:53.043 に答える
0

そのビューを却下するビューのデリゲートが必要です。
ログが表示されないという事実は、委任プロトコルを正しく実装していないことを示しています。アップルのドキュメントの例を見てください。

于 2012-11-29T16:02:07.910 に答える