2008-12-17 2 views
4

Je configure une alerte avec un champ de texte afin que les joueurs puissent entrer leur nom pour un score élevé. Le jeu est orienté en mode paysage, mais lorsque j'appelle pour afficher l'alerte, l'alerte apparaît en mode portrait tandis que deux claviers sont affichés, l'un en mode paysage et l'autre (taille du paysage) en mode portrait. Voici le code que je utilise pour configurer la boîte de dialogue d'alerte:Claviers multiples surgissant sur le dialogue d'alerte d'iPhone?

UIAlertView* dialog = [[[UIAlertView alloc] init] retain]; 
[dialog setDelegate:self]; 
[dialog setTitle:@"Enter Name"]; 
[dialog setMessage:@" "]; 
[dialog addButtonWithTitle:@"Cancel"]; 
[dialog addButtonWithTitle:@"OK"]; 
[dialog addTextFieldWithValue:@"name" label:@""]; 
CGAffineTransform moveUp = CGAffineTransformMakeTranslation(0.0, 100.0); 
[dialog setTransform: moveUp]; 
[dialog show]; 
[dialog release]; 

Comment puis-je faire le spectacle alerte en orientation paysage et l'empêcher de montrer deux claviers?

Merci, Ben

+0

Avez-vous une capture d'écran de ceci? (juste pour le plaisir!) – squelart

Répondre

2

Pour ceux qui peuvent prendre soin, voici une solution de travail, qui fonctionne correctement en mode paysage:

UIAlertView* dialog = [[[UIAlertView alloc] init] retain]; 
[dialog setDelegate:self]; 
[dialog setTitle:@"Enter Name"]; 
[dialog setMessage:@" "]; 
[dialog addButtonWithTitle:@"Cancel"]; 
[dialog addButtonWithTitle:@"OK"]; 

nameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)]; 
[nameField setBackgroundColor:[UIColor whiteColor]]; 
[dialog addSubview:nameField]; 
CGAffineTransform moveUp = CGAffineTransformMakeTranslation(0.0, 100.0); 
[dialog setTransform: moveUp]; 
[dialog show]; 
[dialog release]; 
[nameField release]; 

Assurez-vous que vous avez créé UITextField * nameField; Dans votre fichier .h, vous pouvez obtenir le texte que l'utilisateur a tapé en faisant: inputText = [nameField text]; Dans le - (void) alertView: (UIAlertView *) alerte clickedButtonAtIndex: (NSInteger) méthode buttonIndex.

+2

Je vois que vous faites dialog = [[[UIAlertView alloc] init] conserver] et [libérer la boîte de dialogue]. Les deux alloc et retain doivent correspondre à une version, donc je pense qu'il y a une fuite (à moins qu'il y ait une autre version ailleurs dans votre programme); le «retenir» semble inutile dans tous les cas puisque alloc le fait aussi. – squelart

+0

Alors devrais-je abandonner la retenue et la libération ou quelle serait une solution appropriée? Je pense qu'il me manque quelque chose ... – user21293

+0

@ user21293: alloc fait déjà une retenue, donc vous n'avez pas besoin de le retenir à nouveau – user102008

Questions connexes