2012-12-28 5 views
1

iPhone에서 연락처를 표시하는 티타늄 응용 프로그램에서 작업하고 있습니다. 사용자가 사용자의 전자 메일 속성을 선택하면 전자 메일 작성기 창이 표시됩니다. 연락처 세부 정보 창에서 이메일 속성을 선택한 후 메일 작성자가 표시되면 티타늄 응용 프로그램이 충돌합니다.

하지만 내 응용 프로그램이 충돌하고 콘솔 표시 :

** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to begin a modal transition from <ABPeoplePickerNavigationController: 0xb1b7940> to <MFMailComposeViewController: 0x1508c880> while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed' 
*** First throw call stack: 
(0x33fb012 0x2e4de7e 0x33fae78 0x923f35 0xf55d05 0xd544f3 0x33ef1bd 0x33ef0d6 0xd481c5 0xd53342 0x1fb1402 0x1fb1dbd 0x1fb1c30 0x11af4e9 0x370b53f 0x371d014 0x370d7d5 0x33a1af5 0x33a0f44 0x33a0e1b 0x31137e3 0x3113668 0xc6a65c 0x33c8 0x27d5) 

나는 다음과 같은 코드를 사용하고 있습니다 :

var values = {cancel:function(){}}; 
values.fields = ['firstName','email']; 

function showContacts() 
{ 
     Titanium.Contacts.showContacts(values); 
}; 

values.selectedProperty = function(e) { 
       if(e.property == 'email') 
       { 
        var emailDialog = Titanium.UI.createEmailDialog(); 
        emailDialog.subject = "Hello from Titanium"; 
        emailDialog.toRecipients = [e.value]; 
        emailDialog.messageBody = 'Appcelerator Titanium Rocks!'; 
        if(emailDialog.isSupported()) 
        { 
         emailDialog.open(); 
        } 
       } 
      } 

을 나는 이메일을 표시하기 위해 노력하고있어의 때문에이 오류가 알고 작곡가가 연락처 창을 닫을 때.

연락처 창을 닫은 후 이메일 작성기를 표시하는 방법은 무엇입니까?

도와주세요. 미리 감사드립니다.

답변

0

마지막으로 해결책을 찾았습니다.

잠자기 기능을 작성하여 콜백 함수에서 호출했습니다. 그것은 내 문제를 해결하고 충돌은 일어나지 않습니다 ... 만세!

function sleepMyThread(milliseconds) 
{ 
    var startTime = new Date().getTime(); 

    while((new Date().getTime() - startTime) < milliseconds) 
    { 
    } 
} 

콜백 함수의 첫 번째 문으로 sleep 메서드가 추가되었습니다.

2

setTimeout에 코드 줄 바꿈 ... 애니메이션 작업을 할 때 자주 사용합니다.

values.selectedProperty = function(e){ 
    setTimeout(function() { 
     // DO SOMETHING... 
    }, 200); 
}; 
+0

답변 해 주셔서 감사합니다. :) –