Предупреждение не отображается в nativescript ios после использования автозаполнения

Я работаю над приложением nativescript для Android и iOS, в котором я использовал REST API для хранения / получения данных в формате JSON. Основываясь на результате JSON от API, мне иногда нужно показать предупреждение пользователю. Он отлично работал с Nativescript 4.1, но, поскольку я обновился до 4.2, приложение не может отображать окна предупреждений в ios. Он показывает пустую страницу и показывает следующую ошибку.

(UIKitCore) Warning: Attempt to present <UIAlertController: 0x7fb5834eb000> on <UIViewControllerImpl: 0x7fb58659a670> whose view is not in the window hierarchy!

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

if (result.status === 'E') {
                setTimeout(function () {
                    const alertOptions = { title: 'Error', message: result.errMsg, okButtonText: 'OK', cancelable: false };
                    dialogs.alert(alertOptions).then(() => {
                        resolve('Error');
                    });
                }, 700);

Следует отметить, что я использую компонент nativescript-autocomplete в одном из моих вкладки. и эта проблема возникает только тогда, когда пользователь что-то ищет, используя этот компонент. Значит, это может быть что-то связанное с этим компонентом. Может быть, когда автозаполнение закрывает модальное окно, приложение теряет родительскую ссылку?


person Narendra    schedule 08.10.2018    source источник


Ответы (1)


На данный момент нашел промежуточное решение. nativescript-fancyalert работает как шарм. Буду придерживаться этого какое-то время. Он основан на SCLAlertView для ios.

person Narendra    schedule 08.10.2018
comment
Известная проблема с предупреждениями на iOS о том, что они не появятся, если в вашем приложении нет фрейма. Это было исправлено в версии 4.2. Я не уверен, что вас все еще останавливает. Если вы хотите отладить это дальше, поделитесь, пожалуйста, примером игровой площадки, где проблема может быть воспроизведена. - person Manoj; 08.10.2018