web-dev-qa-db-fra.com

Est-il possible de désactiver Control Center dans iOS 7 par programme et sinon, quelles sont les alternatives?

J'ai développé une application qui utilise le geste de balayage de bas en haut. Cela fonctionnait parfaitement dans iOS 6, mais maintenant iOS 7 est sorti, et cela fonctionne peut-être 1 fois sur 25: j'obtiens iOS 7 Control Center presque à chaque fois. Évidemment, Control Center peut être désactivé dans les paramètres, mais cela dépend du propriétaire du téléphone, et je ne peux pas contrôler cela. Donc, ma question est, existe-t-il un moyen de désactiver Control Center pour le moment où mon application est en cours d'exécution (ou plus probablement, est "active", car je voudrais que Control Center revienne si l'utilisateur n'utilise pas activement mon application). Sinon, quelles sont les alternatives? Est-ce que le déplacement/le remaniement de cette fonctionnalité est la seule solution?

28
mike.tihonchik

Aucune alternative, vraiment. Le mieux que vous puissiez faire est d'avertir les utilisateurs et de leur demander d'accéder aux paramètres pour le désactiver.

De façon réaliste, vous perdrez beaucoup d'utilisateurs simplement en le demandant, vous devriez donc changer les gestes.

11
ilya n.

En fait, il y a une option. Vous ne pouvez pas le désactiver. Mais vous pouvez empêcher le lancement accidentel. Désactivez simplement la barre d'état. Ensuite, en glissant, l'utilisateur sera invité à indiquer si le centre de contrôle doit être lancé ou non. il ne sera pas lancé d'un seul coup. Au lieu de cela, une flèche apparaît sur le premier coup et l'utilisateur doit cliquer et faire glisser la flèche pour lancer le centre de contrôle, évitant ainsi un lancement accidentel. Utilisez ce code pour désactiver la barre d'état.

Vous pouvez désactiver la barre d'état à l'aide de ce délégué dans IOS7:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 

Et cette méthode dans IOS6.1 et antérieures:

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

À partir du SDK iOS 11 (compilé dans Xcode 9) en plus de l'implémentation prefersStatusBarHidden :

Objectif-C:

- (BOOL) prefersStatusBarHidden
{
    return YES;
} 

Swift 4 +:

override var prefersStatusBarHidden: Bool { return true }

vous devez également implémenter PreferredScreenEdgesDeferringSystemGestures :

Objectif-C:

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures{
    return UIRectEdgeAll;
};

Swift 4 +:

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

Sinon, le Control/Notification Center apparaît directement; au lieu d'afficher d'abord la boîte grise avec une flèche haut/bas qui doit être glissée haut/bas.

13
JeanLuc