2009-09-15 6 views
3

을적인 Cocos2D내 응용 프로그램이적인 Cocos2D 엔진을 기반으로 .... 난 내 응용 프로그램에서 메일 도구를 삽입하려고 MFMailComposeViewController

도구 모음 (상단은 -> 취소 보내 ...) 내가 볼 수 있지만,

코드 :-(mfMailComposerViewController보기의 다른 부분을 볼 수 없습니다. 자아가 마지막 비트에

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

// Set up recipients 
NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; 
NSArray *ccRecipients = [NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]; 
NSArray *bccRecipients = [NSArray arrayWithObject:@"[email protected]"]; 

[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]; 
} 
+0

안녕하세요, 나도 같은 문제가 있습니다. 내 컨트롤이 메일 컨트롤러에 입력되지 않습니다. 나는 메일 컨트롤러를 표시하기 위해 cocos2d의 선택기를 사용했다. - (void) goToFirstScreen : (id) 보낸 사람 { CCScene * Scene = [CCScene node]; CCLayer * Layer = [mailME 노드]; [Scene addChild : Layer]; [[CCDirector sharedDirector] setAnimationInterval : 1.0/60]; [[CCDirector sharedDirector] pushScene : Scene]; } mailMe는 메일 컨트롤러의 클래스 이름입니다. 나는이 방법으로 추가하는 것이 잘못되었다고 생각합니다. cocos2d에 그것을 추가하는 방법? 감사합니다. –

답변

0

, 변경 피커, 그것은 작동합니다 뭔가하는 더블 체크를하고,이 클래스를 델리게이트로 설정 했습니까? 예 : 헤더에 MFMailComposeViewControllerDelegate? 그렇지 않으면 클래스가 위젯으로 설정됩니다. 메시지를 받고 있지 않습니다.

btw 이것은 초기 질문이 아니라 게시 한 답변에 대한 답변입니다.

0

안녕 나는이 코드를 시도하고 내가 왜 don'know하지만 피커가 제대로 제거 :
//

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

가 {아니라 애니메이션 (일 [피커 dismissModalViewControllerAnimated : YES] ; [picker.view removeFromSuperview];

}

4

heyyyy. 나는이 문제가 어떤 애니메이션이 ... ... 내가 지금처럼있어 것처럼 보인다 ... 전문있어 :

초기화에

:

emailController = [[UIViewController alloc] init]; [[[CCDirector sharedDirector] openGLView] addSubview:emailController.view];

버튼 클릭에 : MFMailComposeViewController

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { [[CCDirector sharedDirector] resume]; [[CCDirector sharedDirector] startAnimation];
[controller dismissModalViewControllerAnimated:NO]; }

+0

아무런 문제없이 원활하게 작동 Kukosk :) – Rushabh

0

몇 단계에 대한

[[CCDirector sharedDirector] pause]; [[CCDirector sharedDirector] stopAnimation];

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; picker.mailComposeDelegate = self;

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

[emailController presentModalViewController:picker animated:YES]; [picker release];

위임 방법은 인앱 이메일 기능을 구현해야합니다.

1 단계 : MessageUI frameWork를 추가하십시오.

2 단계 : .h 파일에서 #import "MessageUI/MessageUI.h". 또한 위임자 MFMailComposeViewControllerDelegate와 UIViewController * emailMe를 추가하십시오.

3 단계 다음하는 .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]; 
} 

에 이러한 방법을 추가하고 완료 응용 프로그램을 실행합니다 :)

+0

이게 나를 위해 작동하지 않습니다 – priya

+0

@PriyaKerala : 전혀 작동하지 않습니까? 조금 정교 해. – aToz

+0

이 코드를 사용하고 내 시뮬레이터에 빈 화면이 표시됩니다. 메일과 관련된 아무 것도 표시되지 않습니다. – priya