2011-10-07 9 views
0

iPhone/iPad 개발에 새로운 기능이며 Unity3d에서 사용하는 플러그인에 몇 가지 문제가 있습니다.MFMailComposeViewController 처분은 iPhone에서 내 이전보기를 가져 오지 못하지만 iPad에서는 작동합니다.

플러그인은 MFMailComposeViewController를 팝업하고 사용자가 게임 내 이메일을 보낼 수 있도록합니다. 사용자가 완료되면 창은 사라지고 게임은 계속 실행됩니다.

이것은 iPad에서는 작동하지만 iPhone에서는 작동하지 않습니다.

iPhone에서 창을 제거한 후에는 게임을 다시 시작할 수 없습니다. 그래픽은 여전히 ​​렌더링되지만 게임이 아직 실행 중인지 아니면 정지 이미지인지 알 수있는 방법이 없습니다 (동적 그래픽이없는 메뉴에 있기 때문에)

다음은이 코드의 일부입니다 수행됩니다

presentModalViewController : 애니메이션 : 사용자에게 주어진 뷰 컨트롤러에 의해 관리되는 모달 뷰를 선물

-(IBAction)launchEmailView:(NSString*)address subject:(NSString*)subject message:(NSString*)message { 
    customUIViewController = [[InAppEmailViewController alloc] init]; 
    [[self getTopApplicationWindow] addSubview:customUIViewController.view]; 

    MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init]; 

    [controller setSubject:subject]; 
    [controller setToRecipients:[NSArray arrayWithObject:address]]; 
    [controller setMessageBody:message isHTML:NO]; 
    [controller.navigationBar setTintColor:[UIColor redColor]]; 

    [customUIViewController presentModalViewController:controller animated:YES]; 
    controller.mailComposeDelegate = self; 
    [controller release]; 
} 



-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { 
    [customUIViewController dismissModalViewControllerAnimated:YES]; 
    [customUIViewController.view removeFromSuperview]; 
    [customUIViewController release]; 
    controller = nil; 
} 

내가 아니라이 가정 할 수있는 문서를 읽기이 함께 할 수있는 뭔가가 .

iPhone 및 iPod touch 장치에서 modalViewController의보기는 항상 전체 화면으로 표시됩니다. iPad에서는 프레젠테이션이 modalPresentationStyle 속성의 값에 따라 다릅니다.

문제는 iPad에서 발생하지 않으므로 전체 화면에서 다르게 처리해야합니다.

도움을 주시면 감사하겠습니다.

감사합니다, 니클라스

[편집]

일부 앞뒤로 주석 후 나는

-(UIWindow*)getTopApplicationWindow 
{ 
    UIApplication* clientApp = [UIApplication sharedApplication]; 
    NSArray* windows = [clientApp windows]; 
    UIWindow* topWindow = nil; 

    if (windows && [windows count] > 0) 
      topWindow = [[clientApp windows] objectAtIndex:0]; 

    return topWindow; 
} 
+0

것을 가정 [[자기 getTopApplicationWindow] addSubview : customUIViewController.view] 왜 그렇게하고 있습니까? 그것은 당신의 문제를 일으킬 가능성이 가장 높습니다. –

+0

이것은 사용중인 플러그인입니다. 나는 그것을 직접 작성하지 않았고 Objective-C에 대한 초보자이기 때문에 이것이 실제로 어떻게되는지 알지 못한다. 나는 이것을 제거하려고하지 않았으므로 이것이 필요하다고 생각했다. 나는 지금 그렇게 할 것이다. – Bakery

+0

이것은 실제로 플러그인이 작동하는 데 필요합니다. 플러그인이 Unity3d에서 호출되었으므로 올바른 창을 찾아야합니다. – Bakery

답변

0

당신이 사용하는 메일 작곡가를 제시해야 topWindow 찾는 기능을 추가하기로 결정 :

[self presentModalViewController:controller animated:YES]; 

eGate에서는 방법 당신은 호출해야합니다 :

[self dismissModalViewControllerAnimated:YES]; 

모든 self는 내가 코드에서 참조 추가 modalViewControllers으로 볼 수있는 유일한 불규칙 인 UIViewController

관련 문제