Question

J'ai déplacé un affichage d'alerte légèrement plus haut pour pouvoir également insérer un clavier à l'écran. Je viens de le faire en saisissant le cadre de l'alerte et en modifiant le Y après avoir déjà montré l'alerte de sorte que les variables de cadre soient légitimes. Cela fonctionne bien sur le simulateur, mais lorsque je le fais sur le matériel, l’alerte commence à la position correcte, mais saute presque immédiatement à sa position centrale verticale d’origine. Est-ce que la position UIAlertView est une chose fixe qui n’est pas supposée changer selon les directives d’utilisation, ou est-ce que je fais juste quelque chose de mal?

Merci!

Était-ce utile?

La solution

Contre quel système d'exploitation essayez-vous cela? Je souhaite que cela fonctionne à la fois sur OS 3.0 Simulator et OS 3.0 Device:

UIAlertView * alert = [ [ UIAlertView alloc ] initWithTitle:@"Alert" message:@"Alert" 
                        delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil ];

alert.transform = CGAffineTransformTranslate( alert.transform, 0.0, 100.0 );

[ alert show ];

CGAffineTransformTranslate prend trois arguments: la transformation existante, une transformation x et une transformation y. Dans l'exemple que j'ai utilisé, l'affichage des alertes est apparu 100 pixels plus haut que normalement. Essayez-le et voyez ce qui se passe.

De plus, je suis presque certain que vous pouvez modifier le cadre avant d'afficher l'alerte, car il est probable que le cadre de l'alerte soit défini par init comme le centre de l'écran complet par défaut.

Autres conseils

Depuis qu'iOS4, UIAlertViews se déplace de manière délicate. J'ai remarqué que si vous ajoutez une sous-vue UITextField sur UIAlertView, sur iOS4, l'alerte est déplacée vers le haut afin que le clavier ne la chevauche pas. Cela n'arrive pas & Lt; iOS4.

J'ai également remarqué que le cadre de l'alerte n'est pas initialisé même après l'appel de show. Il n'existe donc pas de moyen programmatique simple d'effectuer une transformation CGAffine relative. La seule solution serait de réaliser des transformations conditionnelles basées sur la version du système d'exploitation.

Pour moi, cela ressemble à un filetage sur le comportement non documenté de UIAlertViews qui peut être modifié à tout moment. Je ne pense pas que Apple ait voulu que nous utilisions les alertes uniquement pour des textes et des boutons (même si leurs propres applications enfreignent cette règle).

Personnellement, je vais commencer à créer mes propres alertes personnalisées pour ce type de scénario.

Ne constitue-t-il pas une alerte destinée à être modale ? Autrement dit, vous ne le feriez généralement pas effectuer toute autre entrée utilisateur pendant qu'une alerte est active? Si tel est le cas, pourquoi auriez-vous besoin de la visibilité du clavier?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top