Mettre une UIView ou UIWindow au-dessus de la Barre d'état
Mon but est de dessiner un bouton invisible au-dessus de la barre d'état en haut de mon iPhone (dimension 320*20 pixels).
Peu importe ce que je tente, quelque chose est buggé:
- Par exemple, j'ai essayé de créer un nouveau point de vue. Quand je veux placer le point de vue sur le haut de mon application, il disparaît toujours derrière la barre d'état au lieu d'être en face d'elle!
- J'ai trouvé une autre bonne idée sur Stackoverflow:
Ajouter UIView Au-Dessus De Tous Les Autres Points De Vue, Y Compris La Barre D'État
Même si une deuxième UIWindow n'est pas recommandé, j'ai essayé de la mettre en œuvre. Cela a fonctionné comme je le voulais, jusqu'au moment que j'ai remarqué un problème: le clavier n'apparaît plus lorsque c'est nécessaire (par exemple, lorsque vous cliquez dans une zone de texte)!
Comment puis-je résoudre ce problème? Ou est-il une meilleure approche de mon problème? C'est mon code pour la création de la deuxième fenêtre:
//Create window
statusWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0,0,320,20)];
statusWindow.windowLevel = UIWindowLevelStatusBar;
[statusWindow makeKeyAndVisible];
//Create statusBarButton
statusBarButton = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect buttonFrame2 = statusBarButton.frame;
buttonFrame2.size = CGSizeMake(320,20);
statusBarButton.frame = buttonFrame2;
[statusBarButton addTarget:self action:@selector(goTop) forControlEvents:UIControlEventTouchUpInside];
//Place button into the new window
[statusWindow addSubview:statusBarButton];
OriginalL'auteur andreas | 2010-11-23
Vous devez vous connecter pour publier un commentaire.
Dans la documentation pour l' -[UIWindow makeKeyAndVisible]:
La "clé", c'est celui qui obtient certains événements d'entrée; les champs de texte dans un non-clé de la fenêtre peut ne pas fonctionner. Il y a deux choses que vous pouvez faire:
statusWindow.hidden = NO
à la place (mais je ne vois pas pourquoi il serait masqué par défaut). Je ne pense pas que vous pouvez "afficher devant les autres fenêtres" comme -makeKeyAndVisible n'; windows n'avez pas de superview vous pouvez appeler -bringSubviewToFront: sur IIRC.Quelle méthode avez-vous consommer?
Voir mon dernier post: j'ai dû supprimer la commande "statusWindow makeKeyAndVisible" et l'utilisation "statusWindow.hidden = NON" à la place. À la fin de tous les code que j'ai ajouté "fenêtre makeKeyAndVisible" ainsi, l'application sait que c'est pour afficher le clavier. Il a travaillé! J'espère que Apple va accepter cette solution.
Il n'utilise pas du tout "Api privées", Apple est peu probable de le rejeter. C'est un peu inquiétant de constater que vous pouvez placer une fenêtre au-dessus de la barre d'état. Otoh, que, il n'y a rien qui vous empêche de cacher le "réel" de la barre d'état et l'affichage d'un clone, il n'est donc pas vraiment un gros risque de sécurité.
OriginalL'auteur tc.
dans AppDelegate fichier
ou de toute autre catégorie de
et si vous voulez faire de la barre d'état pour être sur le dessus de nouveau u pouvez définir
OriginalL'auteur Mihriban Minaz
Si d'autres utilisateurs de mettre en œuvre ce, voici ma solution:
statusWindow
à votre point de vue de la hiérarchie d'aussi loin que je peux dire. Comment obtenez-vous qu'il apparaisse?J'ai déclaré la fenêtre et statusWindow dans mon h-fichier et synthétiser dans mon m-fichier. Rien d'autre n'a été aussi loin que j'ai vérifié! Veuillez noter que mon bouton est invisible et uniquement sur le haut de la barre d'état et appelle la fonction goTop qui doit être déclaré. application iPhone rotation est également une confusion de ce que vous avez à redimensionner le bouton.
Cela ne marche pas de travail pour moi non plus, ce code est à l'AppDelegate?
OriginalL'auteur andreas
Essayer:
Je ne pense pas que son possible pour apporter une vue en avant de la barre d'état.
OriginalL'auteur WrightsCS