【问题标题】:cocos2d MFMailComposeViewControllercocos2d MFMailComposeViewController
【发布时间】:2009-09-15 14:29:57
【问题描述】:

我尝试在我的应用程序中插入一个邮件工具......我的应用程序是基于 cocos2d 引擎的

工具栏(在顶部 -> 取消,发送...)是可见的,但我看不到 mfMailComposerViewController 视图的其他部分 :-(

代码:

-(void)displayComposerSheet {   
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"my message"];

// Set up recipients
NSArray *toRecipients = [NSArray arrayWithObject:@"first@example.com"]; 
NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil]; 
NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com"]; 

[picker setToRecipients:toRecipients];
[picker setCcRecipients:ccRecipients];  
[picker setBccRecipients:bccRecipients];

// Attach an image to the email
UIImage *screenshot = [[Director sharedDirector] screenShotUIImage];
NSData *myData = UIImagePNGRepresentation(screenshot);
[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"AdMotiv"]; 

// Fill out the email body text
NSString *emailBody = @"test";
[picker setMessageBody:emailBody isHTML:NO];
[[picker view] setFrame:CGRectMake(0.0f,0.0f,320.0f, 480.0f)];

[[picker view] setTransform:CGAffineTransformIdentity];
[[picker view] setBounds:CGRectMake(0.0f,0.0f,320.0f, 480.0f)];
//[[[VariableStore sharedInstance] parentView] setTransform: CGAffineTransformIdentity];
//[[[VariableStore sharedInstance] parentView] setBounds : CGRectMake(0.0f, 0.0f, 480.0f, 320.0f)];

UITextField *textfeld = [[UITextField alloc] initWithFrame:CGRectMake(50.0f, 50.0f, 100.0f, 100.0f)];
[[picker view] addSubview:textfeld];


[[[VariableStore sharedInstance] window]addSubview:picker.view];
[[[VariableStore sharedInstance] window] makeKeyAndVisible];


[picker release];
}

【问题讨论】:

  • 嗨,我也有同样的问题。我的控制甚至没有进入邮件控制器。我在 cocos2d 中使用了一个选择器来显示邮件控制器。 -(void)goToFirstScreen:(id)sender { CCScene *Scene = [CCScene 节点]; CCLayer *Layer = [mailME 节点]; [场景 addChild:Layer]; [[CCDirector sharedDirector] setAnimationInterval:1.0/60]; [[CCDirector sharedDirector] pushScene: Scene]; } mailMe 是邮件控制器的类名。我认为以这种方式添加是错误的。如何在 cocos2d 中添加它?谢谢。

标签: iphone cocos2d-iphone mfmailcomposeviewcontroller


【解决方案1】:

嘿嘿嘿。我已经开始工作了...似乎问题出在一些动画上... ...我现在已经做到了:

在初始化时:

emailController = [[UIViewController 分配]初始化]; [[[CC主任 sharedDirector] openGLView] addSubview:emailController.view];

点击按钮:

[[CCDirector sharedDirector] 暂停]; [[CCDirector sharedDirector] 停止动画];

MFMailComposeViewController *picker = [[MFMailComposeViewController 分配] 在里面]; picker.mailComposeDelegate = 自我;

[picker setSubject:@"TEST"]; [选择器 setMessageBody:@"JAJAJA" isHTML:YES];

[电子邮件控制器 presentModalViewController:picker 动画:是]; [选择器发布];

MFMailComposeViewController 的委托方法

-(void)mailComposeController:(MFMailComposeViewController*)控制器 didFinishWithResult:(MFMailComposeResult)结果 错误:(NSError *)错误{ [[CCDirector sharedDirector] 简历]; [[CC主任 sharedDirector] startAnimation];
[控制器 dismissModalViewControllerAnimated:NO]; }

【讨论】:

    【解决方案2】:

    在最后一点,将选择器更改为 self,它应该可以工作。需要仔细检查的东西,您是否将您的班级设置为代表?即标题中的 MFMailComposeViewControllerDelegate ?如果没有,那么它将不会收到消息。

    顺便说一句,这是对您发布的答案的回应,而不是最初的问题。

    【讨论】:

      【解决方案3】:

      您好,我尝试使用此代码并且有效(不适用于动画,我不知道为什么,但选择器已正确删除:)

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

      {
      //[选择器dismissModalViewControllerAnimated:YES]; [picker.view removeFromSuperview];

      }

      【讨论】:

        【解决方案4】:

        实现应用内电子邮件功能只需几个步骤。

        Step1:添加 MessageUI 框架。

        Step2:在.h文件中, #import "MessageUI/MessageUI.h"。 还要添加委托MFMailComposeViewControllerDelegate,就像和UIViewController *emailMe;

        Step3:在.m文件的init函数中添加这几行代码

        CCMenuItem *emailItem = [CCMenuItemFont itemFromString: @"Email"     target:selfselector:@selector(emailCallback)];
        CCMenu *menu = [CCMenu menuWithItems: emailItem, nil];
            menu.position = ccp(50,50);
            [self addChild:menu];
        
            emailMe = [[UIViewController alloc] init];
        [[[CCDirector sharedDirector] openGLView] addSubview:emailController.view];
        

        第 4 步:在 .m 中添加这些方法

        -(void)emailCallback
        {
            [[CCDirector sharedDirector] pause];
            [[CCDirector sharedDirector] stopAnimation];
        
            MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
            picker.mailComposeDelegate = self;
        
            [picker setSubject:@"Email test "];
            [picker setMessageBody:@"finally its working " isHTML:YES];
        
            [emailMe presentModalViewController:picker animated:YES];
            [picker release];
        }
        
        - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
        {
            [[CCDirector sharedDirector] resume];
            [[CCDirector sharedDirector] startAnimation];
        
            [controller dismissModalViewControllerAnimated:NO];
        }
        

        并运行应用程序:)

        【讨论】:

        • @PriyaKerala:它根本不起作用吗?详细说明一下。
        • 我使用了这段代码,然后我的模拟器显示了一个空白屏幕,与邮件无关
        • 它适用于 iPad,但不适用于 iPhone。 上,其视图不在窗口层次结构中!
        猜你喜欢
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-10
        相关资源
        最近更新 更多