Ответ 1
Это известная проблема в финальной версии, которая проявляется в двух случаях:
- При представлении второго модального контроллера (пейджингового или одиночного) поверх существующего модема подкачки
- При представлении меню с использованием параметра "Принудительное касание" над модульным контроллером пейджинга
Это обсуждалось на форумах разработчиков Apple, и единственным обходным решением, о котором я слышал, является тот, который я использую в своем приложении. К сожалению, нет простого кода для совместного использования, который решает проблему, поэтому я опишу подход (который я считаю грязным, но работоспособным).
Во-первых, вам нужно отслеживать презентации интерфейса контроллера. У меня есть основа для этого, но вам, возможно, придется сворачивать самостоятельно. Когда у контроллера дочернего интерфейса есть его willActivate, вызываемый два раза подряд (другими словами, без вызова другого контроллера дочернего интерфейса), вы можете предположить, что модаль был представлен/отклонен поверх него.
Ваш презентационный/родительский контроллер может затем проинформировать всех детей о том, что произошла ошибка модального меню, и эти дочерние контроллеры могут отображать строку состояния с собственной кнопкой "Отмена/Закрытие". При некоторой работе вы можете воссоздать идеальную версию стандартной строки состояния с одинаковым поведением.
Последний поворот - это обнаружить, когда приложение Watch приостановлено, а затем возобновляется. В этом случае willActivate также вызывается дважды. Если вы не справитесь с этой ситуацией, вы перестанете отображать строку состояния замены и одновременно будете иметь два на экране. Не отличный сценарий.
Получение этого права очень сложно, но оно действительно работает. Я просто хочу, чтобы у меня был простой пример кода, который вы могли бы ввести.
Обновление: я переместил часть моего обходного кода в GitHub: https://github.com/mikeswanson/JBInterfaceController