iOS Control Center касается перехода к моему представлению прокрутки?
У меня есть UIScrollView
который прокручивается горизонтально вдоль нижнего края моего приложения. Я заметил ошибку, при которой, если пользователь проводит пальцем вверх, чтобы открыть Центр управления, Центр управления прикрепляется к его пальцу, но мой scrollViewDidBeginDragging
метод называется. Проблема в том, что никакой последующий метод завершения не вызывается, то есть мой вид прокрутки думает, что кто-то начал тянуть его и никогда не останавливался.
Известно ли, что при открытии Центра управления (или, я полагаю, тоже центра уведомлений) касания передаются приложению внизу? Это происходит только на устройстве, а не в симуляторе (в симе scrollViewDidBeginDragging
метод делегата никогда не вызывается).
Кто-нибудь сталкивался с этим? Кажется, противостоять довольно сложно.
1 ответ
Я столкнулся с этой ошибкой в iOS 8. Оба вида прокрутки и другие виды с пользовательскими жестами получали прикосновения при выполнении пролистывания от нижнего жеста, чтобы открыть Центр управления. У меня было несколько UIB-кнопок в нижней части экрана, которые также начали бы отслеживать. Ни одна из этих проблем не возникала с iOS 7, использующим один и тот же жест для отображения Центра управления.
Мое исправление для iOS 8 состояло в добавлении следующего кода в методы applicationWillResignActive и applicationDidBecomeActive моего делегата приложения.
- (void)applicationWillResignActive:(UIApplication *)application
{
[application beginIgnoringInteractionEvents];
[UIView animateWithDuration:0.25 animations:^{
for (UIWindow *aWindow in application.windows)
{
aWindow.tintAdjustmentMode = UIViewTintAdjustmentModeDimmed;
}
}];
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[UIView animateWithDuration:0.25 animations:^{
for (UIWindow *aWindow in application.windows)
{
aWindow.tintAdjustmentMode = UIViewTintAdjustmentModeAutomatic;
}
} completion:^(BOOL finished) {
[application endIgnoringInteractionEvents];
}];
}
Этот код в основном отключает все взаимодействия для моего приложения, когда оно уходит в активное состояние. Я также решил установить режим оттенка затемненным для всех окон, что является моим собственным выбором, чтобы помочь пользователю понять мои элементы панели инструментов и другой пользовательский интерфейс, который использует tintColor, не активен.
Когда мое приложение снова становится активным, оно прекращает игнорировать события взаимодействия и восстанавливает автоматический режим оттенка для окон.
Надеюсь, это поможет вам.