[Появляется, чтобы быть исправлен в iOS 10!] Итак, что следует применять только к iOS 9...
Я экспериментировал с новой инфраструктурой контактов Apple, и я обнаружил огромную ошибку в одной из трех форм CNContactViewController. Он разрушает окружающий интерфейс, так что ваше приложение становится бесполезным; пользователь застревает.
Чтобы сделать эту ошибку легко увидеть, я разместил пример проекта в https://github.com/mattneub/CNContactViewControllerBug.
Чтобы поэкспериментировать, запустите проект и выполните следующие шаги:
-
Нажмите кнопку (Неизвестное лицо).
-
Предоставьте доступ по запросу.
-
В нашем навигационном интерфейсе отображается частичный контакт (обратите внимание на кнопку "Назад" вверху).
-
Коснитесь Добавить в существующий контакт. Появится панель выбора контактов.
-
Нажмите "Отмена". На самом деле это не имеет значения, что вы делаете здесь, но нажатие Cancel является самым простым и самым быстрым способом добраться до ошибки.
-
Теперь мы возвращаемся к частичному контакту, но интерфейс навигации исчез. У пользователя нет возможности выйти из этого интерфейса. Приложение закрыто.
Чтобы уточнить, вот скриншоты шагов, которые вам нужно предпринять:
Нажмите "Добавить" в "Существующий контакт", чтобы увидеть это:
Нажмите "Отмена", чтобы увидеть это; обратите внимание, что это то же самое, что и первый снимок экрана, но панель навигации исчезла:
Я пробовал много способов обойти эту ошибку, но, похоже, нет способа. Насколько я могу судить, это окно представлено каркасом "вне процесса" и не является частью вашего приложения. Вы не можете избавиться от него.
Так что же вопрос? Я предполагаю, что это: может ли кто-нибудь показать мне способ сделать этот контроллер (в этой форме) доступным? Существует ли обходное решение, которое я не нашел?
EDIT Эта ошибка появилась в iOS 9.0 и все еще присутствует в iOS 9.1. В комментарии @SergeySkopus сообщает, что переход на устаревшую структуру адресной книги не помогает; ошибка находится в базовой структуре где-то.