Подтвердить что ты не робот

Можно ли отключить Control Center в iOS 7 программно, а если нет, то какие альтернативы?

Я разработал приложение, которое использует жестом салфетки снизу вверх. Он отлично работал в iOS 6, но теперь вышел iOS 7, и он работает, возможно, 1 из 25 раз: я получаю iOS 7 Control Center почти каждый раз. Очевидно, что Control Center можно отключить в настройках, но это зависит от владельца телефона, и я не могу этого контролировать. Поэтому мой вопрос заключается в том, есть ли способ отключить Центр управления в то время, когда мое приложение работает (или, более вероятно, является "активным", так как я бы хотел, чтобы Control Center вернулся, если пользователь не активно использует мое приложение). Если нет, то каковы альтернативы? Перемещение/переработка этой функциональности является единственным решением?

4b9b3361

Ответ 1

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

Реально, вы потеряете много пользователей, просто спросив об этом, поэтому вы должны изменить жесты.

Ответ 2

На самом деле есть опция. Вы не можете отключить его. Но вы можете предотвратить случайный запуск. Просто отключите строку состояния. Затем при прокрутке пользователю будет предложено запустить или нет центр управления. он не будет запущен ни одним ударом. Вместо этого стрелка появляется при первом прокрутке, и пользователю нужно щелкнуть и перетащить стрелку, чтобы запустить центр управления, а значит, предотвратить случайный запуск. Используйте этот код, чтобы отключить строку состояния.

Вы можете отключить строку состояния с помощью этого делегата в IOS7:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 

И этот метод в IOS6.1 и ранее:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

Ответ 3

Начиная с SDK iOS 11 (скомпилированный в Xcode 9) дополнительно к реализации prefersStatusBarHidden:

Objective-C:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 

Swift 4 +:

override var prefersStatusBarHidden: Bool { return true }

вам также нужно реализовать preferredScreenEdgesDeferringSystemGestures:

Objective-C:

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
    return UIRectEdgeAll;
};

Swift 4 +:

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
    return .all
}

В противном случае Центр управления/уведомления отображается напрямую; вместо того, чтобы сначала показывать серое окно со стрелкой вниз, которую нужно перетащить вверх/вниз.