2 votes

"UIWindowLevelStatusBar + 1" comportement étrange du clavier

Ce code dans le appDelegate rend mon application étrange

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.windowLevel = UIWindowLevelStatusBar + 1;
    return YES;
}

Lorsque je cache le clavier de la fonction [myTextView resignFirstResponder], mon clavier disparaît sous la vue, au lieu de glisser vers le bas comme il le devrait.

Quel est le meilleur moyen de corriger cela? Pourquoi UIWindowLevelStatusBar + 1 perturbe-t-il toute la structure de l'application?

ÉDIT:

Ce que j'essaie de faire, c'est de créer une vue au-dessus de la statusBar. Est-il incorrect de définir UIWindowLevelStatusBar + 1 dans le appDelegate?

2voto

brbgyn Points 411

Homme, je sais que c'est vieux de 2 ans mais voilà:

Fonctionne sur iOS 7 et 8, pas testé sur les bêtas 9.

Je rajoute un ticker à la barre de statut. Oui je sais qu'Apple n'aime pas ça, mais les utilisateurs ont le choix de l'utiliser là-bas ou ailleurs.

Dans l'AppDelegate, lorsque vous voulez masquer le contenu de la barre de statut (opérateur, heure, batterie), vous appelez:

self.window.windowLevel = UIWindowLevelStatusBar+1;

D'accord

Le problème était de trouver comment récupérer le contenu, n'est-ce pas ? C'était aussi mon problème. Le voici:

self.window.windowLevel = UIWindowLevelStatusBar-1;

Salut

1voto

Jonathan Grynspan Points 32291

Le clavier existe également dans une fenêtre (tout ce qui est affiché à l'écran) et cette fenêtre a un niveau inférieur à celui de votre fenêtre.

Pourquoi définissez-vous le niveau de votre fenêtre si haut ? Si vous nous dites ce que vous essayez d'accomplir, nous pourrions peut-être suggérer une approche alternative.

0voto

Rajesh Kumar Points 26

Cacher la barre d'état et définir un cadre pour la barre de navigation de manière simple.

CGRect statusFrame = [UIApplication sharedApplication].statusBarFrame;
[[UIApplication sharedApplication] setStatusBarHidden:YES];
self.navigationController.navigationBar.frame = CGRectMake(0, statusFrame.size.height, 320,46);
[[AppDelegate instance].window addSubview:statusView];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X