2014-03-28 1 views
0

문제 - MFMessageComposeViewController를 준비하고 표시하는 것은 Apple docs에 따라 매우 쉽습니다. 내가 알아야 할 것은 일 때이 완전히 제시된 것입니다.MFMessageComposeViewController - 이것이 언제 완전히 표시되었는지 어떻게 알 수 있습니까?


설명 - 완료 블록으로 MFMessageViewComposeController을보기는 쉽지만, 내 문제가 해결되지 않습니다

[self presentViewController:messageController animated:YES completion:^(void){ 

    //Controller has been shown. But not really.... 

}]; 

문제는받는 사람의 큰 그룹에 메시지를 더 분명하다 (50 명). 완료 블록이 호출되지만 전화기의 화면은 검은 색으로 남아 있습니다. 몇 초 후 메시징 창이 나타납니다. 몇 초 후 수신자 목록이 깜박이는 커서로 활성화됩니다. 기본적으로 컨트롤러가 제시되었을 때 후에 에로드 및 처리되는 많은 작업이 있습니다. 을 파악하기 위해 인터페이스가 완전히로드 된 때 - 나는 싶습니다 무엇


. 나는 간단한 대답을 기대하지 않으며, 나는 이미 그것에 꽤 많은 시간을 보냈다 - 확실히 가치있는 현상금. 코드를 사용하여 실무 답변을 게시 할 수있는 경우 최대 현상금을 지급합니다.

답변

0

MFMailComposeViewController보기 프레임을 확인하십시오. 일단 화면의 상단에 도달하면 모양을 처리합니다.

[self presentViewController:messageController animated:YES completion:^ 
{ 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^
    { 
     while(messageController.view.frame.origin.y > 0) 
     { 
     } 

     dispatch_async(dispatch_get_main_queue(),^
     { 
      // Handle appearance of MFMailComposeViewController 
     }); 
    }); 
}]; 

다른 방법은 dispatch_after() 방법을 사용하여 0.3 초를 기다리는 것입니다. 그러나이 시간 간격은 iOS의 다음 버전에서 변경 될 수 있습니다.

+0

고마워요! 안타깝게도 프레임 원점은 실제로 여기에 0입니다. 프레임의 원점이 0이되면 검정색 화면과 활성 상태가되는 데 몇 초가 걸리는 텍스트보기를 포함하여 더 많은로드가 발생하므로이 작업이 도움이되지 않습니다. –