При запуске почтового композитора при выборе свойства электронной почты в окне контактной информации приложение Titanium аварийно завершает работу

Я работаю над титановым приложением, которое отображает контакты в iPhone. Когда пользователь выбирает свойство электронной почты пользователя, я показываю окно компоновщика электронной почты.

Но мое приложение терпит крах и отображает консоль:

** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to begin a modal transition from  to  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();
                    }
                }
            }

Я знаю, что эта ошибка связана с тем, что я пытаюсь отобразить композитор электронной почты, когда окно контакта увольняется.

Как отобразить композитор электронной почты после отклонения окна контакта?

Пожалуйста, помогите мне. Заранее спасибо.

1
nl ja de

2 ответы

оберните код в setTimeout ... Я часто его использую при работе с анимацией.

values.selectedProperty = function(e){
    setTimeout(function() {
       //DO SOMETHING...
    }, 200);
};
2
добавлено
спасибо за Ваш ответ :)
добавлено автор Midhun MP, источник

Наконец, я нахожу решение.

Я написал функцию сна и вызвал ее в функции обратного вызова. Он решил мою проблему, и авария не происходит ... Ура!

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

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

И добавил метод сна как первый оператор функции обратного вызова.

 values.selectedProperty = function(e){
       sleepMyThread(777);
      //other stuffs
}
0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.