Медленно ли работает ABPeoplePickerNavigationController?

Когда используешь ABPeoplePickerNavigationController для загрузки и отображения элемента управления требуется момент (~0,5 с), который медленнее, чем обычное время реакции других всплывающих окон.

Я пришел с решением установить контроллер в качестве переменной и получить доступ к этому предварительно загруженному объекту через:

[self presentViewController:self.peoplePicker animated:YES completion:nil];

Просто из любопытства, есть ли другой способ запустить сборщик без предварительной загрузки?

1 ответ

Решение

То же самое и здесь, у меня нет ответа, чтобы решить эту проблему, и я думаю, что это может быть ошибка iOS 8 (ОБНОВЛЕНИЕ: да, это так, Apple это подтвердила).

В моих тестах на iOS 7.x время презентации ABPeoplePicker составляло менее 0,2 сек.

Проблема появляется только в iOS 8.x, и только в первый раз, когда вы представляете ABPeoplePicker. Презентация ABPeoplePicker занимает около 3 секунд в моем приложении и около 1,5 секунд в примере приложения, которое выполняет только презентацию ABPeoplePicker нажатием кнопки. Я проверил это как на симуляторе, так и на устройстве с ~20 контактами.

Предварительная загрузка экземпляра существенно не меняет время представления, как я и ожидал. Я также пытался вызвать презентацию в главном потоке и установить для анимации значение "НЕТ", но в iOS 8 она все еще медленная.

Профилировщик времени мне не помогает, потому что я не вижу неожиданного долгого времени вычислений.

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

Я реализовал свой собственный, вы можете найти его на GitHub: VeeContactPicker и, конечно, использовать его!

НОВОСТИ ИЗ ЯБЛОКА:

Команда Apple ответила на мой отчет об ошибке:

Отношения разработчиков Apple, 16 июня 2015 00:36

Мы считаем, что эта проблема была решена в последней бета-версии iOS 9. Это предварительное обновление iOS 9. Пожалуйста, обратитесь к примечаниям к выпуску для получения полной инструкции по установке. Пожалуйста, проверьте с этим выпуском. Если у вас все еще есть проблемы, предоставьте соответствующие журналы или информацию, которая может помочь нам в расследовании. *

iOS 9 обновление

В iOS 9 ABFramework устарела для новой объектно-ориентированной структуры контактов, которая поставляется с новым средством выбора [см. CNContactPicker]! К сожалению, кажется, что проблема не была решена, логика была обновлена, но ViewController все тот же, что и в iOS 8. Так что CNContactPicker все еще очень медленно загружается и отображает элемент управления...

Я сообщил об ошибке в Apple, ожидая новостей...

Другие вопросы по тегам