2009-05-07 6 views

Répondre

9

Oui, ce n'est pas documenté. Pour ajouter un champ de texte à UIAlertView, utilisez addTextFieldWithValue: label: method. Vous appelez avec le texte par défaut comme premier argument et le texte qui s'affiche dans un champ vide comme le second. Cela fait, vous pouvez accéder au champ en utilisant textFieldAtIndex: n - voir ci-dessous.

UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Who are you?"  
         message:@"Give your full name" 
         delegate:self cancelButtonTitle:@"Cancel" 
         otherButtonTitles:@"OK", nil]; 
[alert addTextFieldWithValue:@""label:@"Name"]; 

// Customise name field 
UITextField* name = [alert textFieldAtIndex:0]; 
name.clearButtonMode = UITextFieldViewModeWhileEditing; 
name.keyboardType = UIKeyboardTypeAlphabet; 
name.keyboardAppearance = UIKeyboardAppearanceAlert; 
[alert show]; 

Le prochain extrait montre comment récupérer la valeur dans le champ Nom:

NSLog("Name is %@", [[modalView textFieldAtIndex:0] text]); 
+5

, cela vous obtenez des coups de pied de l'App Store de nos jours. – zoul

+0

D'accord - cela a été écrit il y a longtemps. Devrais-je supprimer la réponse? –

+0

@JaneSales: Je ne supprimerais pas la réponse, mais j'ajouterais certainement un avertissement important et visible en haut de votre message. – FreeAsInBeer

3

Jeff Lamarche a posté une sample code on his blog à faire exactement cela. Le formatage a semblé un peu bancal quand je l'ai essayé mais c'est probablement un bon point de départ.

16

Voici une façon «approuvée par Apple» de le faire à partir de Tharindu Madushana. Je l'ai de son commentaire sur cette page: http://iosdevelopertips.com/undocumented/alert-with-textfields.html

// Ask for Username and password. 
UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@"Twitter Details!" message:@"\n \n \n" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 

// Adds a username Field 
UITextField *utextfield = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)]; 
utextfield.placeholder = @"Username"; 
[utextfield setBackgroundColor:[UIColor whiteColor]]; 
[alertview addSubview:utextfield]; 

// Adds a password Field 
UITextField *ptextfield = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 80.0, 260.0, 25.0)]; 
ptextfield.placeholder = @"Password"; 
[ptextfield setSecureTextEntry:YES]; 

[ptextfield setBackgroundColor:[UIColor whiteColor]]; [alertview addSubview:ptextfield]; 
// Move a little to show up the keyboard 
CGAffineTransform transform = CGAffineTransformMakeTranslation(0.0, 80.0); 
[alertview setTransform:transform]; 

// Show alert on screen. 
[alertview show]; 
[alertview release]; 

//... 
// Don't forget to release these after getting their values 
[utextfield release]; 
[ptextfield release]; 

Et enfin obtenir le texte de retour

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 0) 
     return; //Cancel 

    UITextField *field = (UITextField *)[[alertView subviews] lastObject]; 
    NSLog (@"%@", field.text); 
} 
+0

Je supprimerais personnellement la transformation et ajouterais [utextfield becomeFirstResponder] une fois que vous aurez relâché la fonction alertview afin que le clavier apparaisse automatiquement. – AlBeebe

5

Ceci est une question très ancienne avec des réponses vraiment vieux.

Ceci est un exemple de la façon dont je reçois un UITextField dans un UIAlertView depuis ios 5:

UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"New List Name" message:@"" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Continue", nil]; 

    message.alertViewStyle = UIAlertViewStylePlainTextInput; 
    self.alertTextField = [message textFieldAtIndex:0]; 
    self.alertTextField.keyboardType = UIKeyboardTypeAlphabet; 
    message.delegate = self; 
    [message show]; 
    [self.alertTextField becomeFirstResponder]; 

où alertTextField a été mis en place comme ceci: Comme d'autres personnes déjà mentionné

@property (nonatomic, strong) UITextField *alertTextField; 
Questions connexes