Comment faire pour déplacer les boutons dans un UIAlertView pour faire de la place pour insérer le UITextField?
[MODIFIER] Hmm. Peut-être que cette question devrait être intitulé "qu'est-ce que la valeur par défaut de l'utilisateur boîte de dialogue de saisie vue dans CocoaTouch?" Je me rends compte que je peux créer une vue d'ensemble, c'est exactement ce que je veux, et l'envelopper dans une vue-contrôleur et presentModalView -- mais j'étais en quelque sorte en espérant qu'il y a une norme, d'un utilisateur normal-l'entrée "dans la boîte de dialogue" afficher qui est venu avec le Cacao-touch. "Entrez votre nom", "entrez le texte à rechercher", etc., sont TRÈS fréquents choses!
De toute façon... voici la question que j'ai d'abord demandé:
Ce code:
UIAlertView* find = [[UIAlertView alloc] init];
[find setDelegate:self];
[find setTitle:@"Find"];
[find addButtonWithTitle:@"Cancel"];
[find addButtonWithTitle:@"Find & Bring"];
[find addButtonWithTitle:@"Find & Go"];
[find addButtonWithTitle:@"Go To Next"];
[find addSubview:_findText];
CGRect frm = find.frame;
int height = frm.size.height + _findText.frame.size.height + 100; //note how even 100 has no effect.
[find setFrame:CGRectMake(frm.origin.x, frm.origin.y, frm.size.width, height)];
[find setNeedsLayout];
[find show];
[find release];
Produit de cette Alerte de vue:
Trouver d'Alerte http://www.publicplayground.com/IMGs/Misc/FindAlert.png
(J'ai commencé avec le code de la à cette question par emi1Faber, et il fonctionne comme prévu; cependant, comme je dis dans mon commentaire, le bouton annuler superpositions le champ de texte.)
Comment puis-je remaniement tout pour rendre le champ de texte correctement? [findAlert setNeedsLayout] ne semble pas faire quoi que ce soit, même après que j'ai [findAlert setFrame:tallerFrame]. Conseils?
Merci!
le comportement par défaut d'un UIAlerView est que si il y a plus de deux boutons, il va commencer à aligner verticalement.
OriginalL'auteur Olie | 2009-01-03
Vous devez vous connecter pour publier un commentaire.
Le plus simple (et la plus bonne façon) pour déplacer le texte en vue d'ajouter un message
Aussi, la raison que votre image n'est pas prise d'effet est que
-show
fixe le cadre et crée le point de vue de la hiérarchie avant de commencer l'animation. Vous devriez aussi faire de l'affichage de texte que le premier intervenant de sorte que le clavier apparaît.Exemple complet:
Remarque: Vous pouvez également modifier les sous-vues de UIAlertView, mais depuis qu'Apple a déjà changé la UIAlertView mise en page une fois que vous devriez vérifier leur classe, des descriptions et des images en fonction des valeurs connues avant de définir de nouveaux. Vous pouvez même obtenir quelque chose comme ceci:
(source: booleanmagic.com)
chers rpetrich dans votre capture d'écran u ont montré quatre boutons en deux colonnes. comment u réalisé que ?? fournir le code exemple sera une aide supplémentaire
comment avez-vous insérez 4 boutons en deux colonnes sont-ils des boutons personnalisés ou est-il une astuce cachée veuillez jeter un peu de lumière sur ce point.
OriginalL'auteur rpetrich
Même si vous pouvez obtenir ce travail, il ne va pas être très iPhone-y. Le
UIAlertView
n'est pas vraiment conçu pour la saisie de l'utilisateur comme ceci. Si vous regardez dans toutes les applications Apple, vous verrez qu'ils utilisent une nouvelle vue affiche à l'aide de lapresentModalViewController:
méthode deUIViewController
.Modifier: Cet avis n'est plus aussi vrai qu'il l'était quand je l'ai écrit. Apple a de plus en plus utilisé alerte vues comme des boîtes de saisie de texte et iOS5 même inclut la prise en charge native sans avoir à déranger avec vue (découvrez le
alertViewStyle
propriété).Je pense que peut-être si vous avez besoin d'avoir quatre boutons, puis à l'aide d'un custom
UIViewController
est probablement encore le droit chemin à parcourir. Mais si vous voulez juste entrer un mot de passe avec les boutons OK/Annuler puis c'est la fin.Btw, comment avez vous obtenez les boutons de mise en page 2x2? Avez-vous sous-classe, ou est-ce tout fait avec un off-the-shelf UIAlert? Merci!
OriginalL'auteur Stephen Darlington
Zoul proposé la meilleure méthode, pour capturer la saisie de l'utilisateur viens de faire:
a) Ajouter le UITextFieldDelegate protocole à votre classe.
b) Faire quelque chose comme
c) La partie cruciale était de définir le délégué de la textField pour soi, puis pour accéder aux données, vous pouvez tout simplement:
Espère que cela aide quelqu'un, car j'ai dû réfléchir un peu pour obtenir ce droit.
OriginalL'auteur Goles
Probablement, Vous voulez regarder dans la
addTextFieldWithValue
méthode de laUIAlertView
? Ajoutez le code suivant quelque part en haut de Votre classe:Il n'est pas officiel, mais à mon humble avis ce n'est pas Vous obtenir rejeté à partir de l'App store et il est beaucoup mieux que le piratage de la zone de texte dans la boîte de dialogue Vous-même.
Yep, je viens d'avoir rejeté pour cette raison.
OriginalL'auteur zoul
Explique comment définir le nombre de colonnes, ne l'ai pas testé.
http://iloveco.de/uikit-alert-types/
Cela nous permettra d'appeler la méthode sans le compilateur nous jetant un avertissement.
/s/possible/précis
Très vrai, bon appel. Mon objectif n'a pas été sur les applications publiques.
OriginalL'auteur oden
Essayez de le mettre dans certains (\n)s après le titre dans la UIAlertView d'initialisation. Qui va pousser vers le bas les boutons. Et je suis d'accord avec Stephen ici. Il ya des chances que Apple pourrait rejeter une application que si elle utilise des commandes de façon qu'ils ne le devraient pas. (il y a une clause dans le Human Interface Guidelines à ce sujet!)
OriginalL'auteur lostInTransit
Cette méthode plus simple qui fonctionne pour moi:
Espère que ça aide. Ah, si vous avez besoin de plusieurs boutons alors c'est:
Acclamations
OriginalL'auteur Megachan
https://github.com/TomSwift/TSAlertView
Cette bibliothèque crée réellement le contrôle à partir de zéro plutôt que d'essayer de pirater UIAlertView, qui est généralement un Mauvais Plan (TM)
OriginalL'auteur P i