Ce qui est un moyen simple d'obtenir une saisie de texte boîte de dialogue popup sur un iPhone
Je veux obtenir le nom d'utilisateur. Une simple boîte de dialogue de saisie. De toute manière simple de faire cela?
- juste attendre quelques mois, jusqu'à septembre, et la vie vous sera d'un beaucoup plus facile.
Vous devez vous connecter pour publier un commentaire.
Dans iOS 5, il est une nouvelle et facile façon à ce. Je ne suis pas sûr si la mise en œuvre n'est pas complètement achevé encore que ce n'est pas une gracieuse comme, disons, un
UITableViewCell
, mais il devrait certainement faire l'affaire comme il est maintenant la norme pris en charge dans l'API iOS. Vous n'aurez pas besoin d'une API privée pour cette.Ce qui rend une alertView comme ça (capture d'écran prises à partir de l'iPhone 5.0 simulateur dans XCode 4.2):
Lorsque vous appuyez sur les boutons, le délégué des méthodes sera appelée, et vous pouvez extraire le textInput il y a de la sorte:
Ici, je viens de NSLog les résultats qui ont été saisies. Dans le code de production, vous devriez probablement de garder un pointeur de votre alertView comme une variable globale ou de l'utilisation de la alertView balise pour vérifier si la fonction de délégué était appelé par le
UIAlertView
mais pour cet exemple, cela devrait être ok.Vous devriez vérifier le UIAlertView API et vous verrez qu'il y a certains styles définis.
Espère que cela a aidé!
-- EDIT --
J'ai été jouer avec le alertView un peu et je suppose qu'il a besoin d'aucune annonce qu'il est parfaitement possible de modifier les champs comme vous le souhaitez: vous pouvez créer une référence à la
UITextField
et le modifier comme normal (par programmation).Ce faisant, j'ai construit un alertView comme vous l'avez indiqué dans votre question initiale. Mieux vaut tard que jamais, à droite :-)?
Ce produit cette alerte:
Vous pouvez utiliser la même méthode du délégué comme je l'ai poster plus tôt pour traiter le résultat de l'entrée. Je ne suis pas sûr si vous pouvez éviter la
UIAlertView
du rejet si (il n'y a pas deshouldDismiss
fonction de délégué autant que je sache) donc je suppose que si la saisie de l'utilisateur n'est pas valide, vous devez mettre en place une nouvelle alerte (ou tout simplement réshow
celui-ci) jusqu'à l'entrée correcte a été entré.Amusez-vous!
Pour vous assurer d'obtenir les rappels après que l'utilisateur entre du texte, définissez le délégué à l'intérieur du gestionnaire de configuration.
textField.delegate = self
Swift 3 & 4 (iOS 10 - 11):
Dans Swift (iOS 8 à 10):
En Objective-C (iOS 8):
POUR iOS 5-7:
REMARQUE: ci-Dessous ne fonctionne pas avec iOS 7 iOS (4 - 6)
Juste pour ajouter une autre version.
puis-je appeler
[alert show];
quand je le veux.La méthode qui va
alertView:(UIAlertView *) clickedButtonAtIndex:(NSInteger)buttonIndex
délégué de la méthode pour récupérer la valeur du champ de texte.texte: "NSString *theMessage = [alertView textFieldAtIndex:0].texte;`UITextField
une fois qu'un bouton d'action est taraudé par mettre quelque chose commelet myTextField = alert.textFields![0] as UITextField
dans l'action du gestionnaire. Cela devrait être la réponse de toute façon si.Testé Warkst troisième extrait de code--travaillé très bien, sauf que je l'ai changé à la valeur par défaut type de saisie à la place de numérique:
Depuis IOS 9.0 utilisation UIAlertController:
Voulais juste ajouter une information importante qui, je crois, a été laissé de côté peut-être avec l'hypothèse que ceux qui sont en quête de réponses savez peut être déjà. Ce problème se produit beaucoup et moi aussi, je me suis retrouvé bloqué quand j'ai essayé de mettre en œuvre les
viewAlert
méthode pour les boutons de laUIAlertView
message. Pour ce faire, vous devez 1er ajoutez le délégué de classe qui peut ressembler à quelque chose comme ceci:@interface YourViewController : UIViewController <UIAlertViewDelegate>
En outre vous pouvez trouver un tutoriel très utile ici!
Espère que cette aide.
Essayer ce code Swift dans un UIViewController -
Swift 3:
Je voudrais utiliser un
UIAlertView
avec unUITextField
sous-vue. Vous pouvez soit ajouter le champ de texte manuellement ou, dans iOS 5, utilisez l'une des méthodes nouvelles.code
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Votre titre ici" message:@"c'est couvert" délégué:auto cancelButtonTitle:@"Annuler" otherButtonTitles:@"OK", nil]; UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)]; CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0.0, de 130,0); [myAlertView setTransform:myTransform]; [myTextField setBackgroundColor:[UIColor whiteColor]]; [myAlertView addSubview:myTextField]; [myAlertView show]; [myAlertView release];Ajouter des vues à un UIAlertView comme cette. Dans iOS 5 il y a une certaine "magie" des choses que de le faire pour vous (mais c'est sous NDA).
Dans Xamarin et C#:
Bâtiment sur John Riselvato réponse, pour récupérer la chaîne de retour de la UIAlertView...