Можно ли программно отключить Control Center в iOS 7, и если нет, какие есть альтернативы?
Я разработал приложение, которое использует жест смахивания снизу вверх. Он отлично работал в iOS 6, но теперь вышла iOS 7, и она работает, может быть, 1 из 25 раз: я получаю Центр управления iOS 7 почти каждый раз. Очевидно, что Центр управления можно отключить в настройках, но это зависит от владельца телефона, и я не могу это контролировать. Поэтому мой вопрос заключается в том, есть ли способ отключить Центр управления на время, когда мое приложение работает (или, более вероятно, "активно", так как я хотел бы вернуть Центр управления, если пользователь не использует мое приложение активно). Если нет, каковы альтернативы? Является ли переезд / переделка, что функциональность является единственным решением?
3 ответа
Никаких альтернатив, правда. Лучшее, что вы можете сделать, это предупредить пользователей и попросить их перейти к настройкам, чтобы отключить его.
Реально, вы потеряете много пользователей, просто спросив это, поэтому вы должны изменить жесты.
На самом деле есть вариант. Вы не можете отключить это. Но вы можете предотвратить случайный запуск. Просто отключите строку состояния. Затем при проведении пальца пользователю будет предложено запустить центр управления или нет. он не будет запущен одним движением. Вместо этого стрелка появляется при первом пролистывании, и пользователь должен щелкнуть и перетащить стрелку, чтобы запустить центр управления, что предотвращает случайный запуск. Используйте этот код для отключения строки состояния.
Вы можете отключить строку состояния, используя этот делегат в IOS7:
- (BOOL) prefersStatusBarHidden
{
return YES;
}
И этот метод в IOS6.1 и ранее:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
Начиная с iOS 11 SDK (скомпилированного в Xcode 9) в дополнение к реализации prefersStatusBarHidden:
Objective-C:
- (BOOL) prefersStatusBarHidden
{
return YES;
}
Свифт 4+:
override var prefersStatusBarHidden: Bool { return true }
вам также нужно реализовать предпочитаемый ScreenEdgesDeferringSystemGestures:
Objective-C:
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
return UIRectEdgeAll;
};
Свифт 4+:
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
return .all
}
В противном случае Центр управления / Уведомления появляются напрямую; вместо того, чтобы сначала показывать серую рамку со стрелкой вверх / вниз, которую нужно перетаскивать вверх / вниз.