la compensation d'une UITextField lorsque l'utilisateur commence à taper
version courte: Comment puis-je faire un UITextField case supprimer tout le contenu sur les utilisateurs de la première pression de touche? Je ne veux pas l'info enlevé jusqu'à ce que l'utilisateur commence à taper quelque chose. c'est à dire, de compensation sur commencer à modifier n'est pas assez bon.
version longue: j'ai trois UITextField qui boucle autour (à l'aide de la touche de retour et la capture de la presse dans le "shouldReturn" la méthode. Il y a déjà du texte dans l'objet UITextField, et si l'utilisateur ne tapez rien et va juste pour la prochaine UITextField, la valeur devrait rester (comportement par défaut).
Mais je veux que si l'utilisateur commence à taper, il efface automatiquement le texte d'abord. Quelque chose comme avoir tout le champ en surbrillance, puis taper quoi que ce soit supprime les champs, puis ajoute l'utilisateur pression de touche.
"Clair lors de l'édition commence" c'est pas bien, parce que le texte est immédiatement effacée sur le curseur qui apparaît dans le champ. Ce n'est pas souhaitée. Je pensais que je pouvais utiliser l'espace réservé ici, mais qui ne fonctionne pas comme un défaut, et je ne peux pas trouver une valeur par défaut de la propriété. L'en Surbrillance et les propriétés Sélectionnées ne rien faire à cet égard.
OriginalL'auteur Madivad | 2012-11-16
Vous devez vous connecter pour publier un commentaire.
Déclarer un
BOOL
variable dans votre.h
fichier comme.Et de mettre en œuvre le délégué des méthodes comme:
ok, j'ai essayé et il fonctionne PRESQUE parfaitement pour ma situation. Si je commence à taper, le terrain est dégagé et mon texte peuplée de BIEN - être. Mais si j'utilise le bouton "SUIVANT" sur le clavier et les captures que dans le ShouldRturn méthode, il n'est pas évident de le deuxième champ.
ok, résolu. J'ai eu le clearField au-dessous de l'attribution de la prochaine répondeur (qui est essentiellement effacé après qu'il a été défini).
merci pour les commentaires 🙂
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
ne pas renvoyer un BOOLÉEN?OriginalL'auteur Midhun MP
Il y a un délégué méthode appelée
Ajouter startEditing dans une catégorie à UITextField.
Ensuite, si la valeur change effacer le champ:
Vous pouvez ajouter la propriété à l'objet UITextField catégorie de la manière suivante:
.h
.m
Dave, je vous serais reconnaissant si vous pouviez m'aider à le mettre en œuvre. J'ai essayé de le faire hier soir, mais je suis coincé sur la façon de mettre en œuvre ma propre propriété qui peut être partagé entre plusieurs méthodes (BTW, je n'ai'g vous donner l'-1, en fait, j'aime votre approche)
Vous ne pouvez pas utiliser cette approche. Les catégories ne pouvez pas ajouter des variables d'instance ou de propriétés, seules les méthodes. Il n'y a aucun moyen d'ajouter
startedEditing
àUITextField
.ne crois pas, ahhh bien.. je suis en train de travailler sur un sous-classement plutôt la méthode, mais je suis coincé. Je vais y arriver. Merci
Vous pouvez ajouter la propriété dans la catégorie. S'il vous plaît vérifier avant de downvoting ma réponse. stackoverflow.com/questions/2520889/... La réponse de Midhun DÉPUTÉ est une meilleure idée pour résoudre le problème de ma réponse, mais ma réponse est aussi possible de résoudre le problème, donc je ne pense pas que downvoting ma réponse est éthique...
OriginalL'auteur Dave
Je veux remercier les gens pour leur réponses, j'ai mis en place les deux principales méthodes décrites ici et les deux a fonctionné parfaitement. Mais depuis, j'ai trouver un moyen beaucoup plus simple, plus agréable à la réponse et ne comporte qu'une seule ligne de code 🙂
Dans le champ de l'didBeginEditing méthode, place
[self.textField selectAll:self];
ou[self.textField selectAll:nil];
L'original de la réponse que j'ai trouvé avait
selectAll:self
mais cela montre le couper/copier/coller du menu. Si vous envoyeznil
au lieu deself
le menu ne s'affiche pas.Ajouter cette ligne de code met en évidence le texte sur l'entrée de la zone de texte (donc donne à l'utilisateur une indication visuelle), et seulement supprime tout une fois qu'une touche est enfoncée.
OriginalL'auteur Madivad
Une autre solution qui remplit le même but est tout simplement d'utiliser un champ texte espace réservé qui est définie comme:
The string that is displayed when there is no other text in the text field.
Donc dès que l'utilisateur commence à taper, le texte de l'espace réservé disparaît.
C'est quelque chose que vous pouvez définir à partir de la table de montage séquentiel, ou par programmation. (Oui, il m'a fallu deux heures à essayer de le comprendre, le plus difficile.. lorsque la solution a été littéralement un changement de ligne de code).
juste assez.. mais je pensais que cette réponse serait pertinente dans le contexte de votre question esp (la version courte).. disons-le de cette façon: pour quelqu'un qui est totalement nouveau pour uitext et le contrôle du texte dans iOS, et googler quelque chose de similaire à votre question titre.. ils vont débarquer cette page.. rien n'est mentionné au sujet des espaces réservés sur cette page.. quand il s'agit clairement d'une réponse à certains qui sont nombreux à ne pas avoir exactement le même besoin que vous (Mindhun répondre peut avoir résolu votre problème.. mais elle ne résout pas le mien)..
.. alors j'ai pensé à un
placeholder
mérite au moins une mention.. ne vous inquiétez pas, je ne suis pas en demandant un vote ou quoi que ce soit.. je veux juste écrire quelque chose qui peut sauver quelqu'un d'autre un temps précieuxOriginalL'auteur abbood
Si vous voulez effacer le texte de l'un à l'utilisateur interagit avec elle, il y a une option dans l'interface builder à l'endroit où vous pouvez définir le champ de texte pour "Effacer lors de l'édition commence."
OriginalL'auteur Kamiccolo
Essayez d'utiliser la méthode suivante.
ensuite, vous pouvez définir une valeur BOOL isFirsttime OUI et Après, cliquez d'abord sur rendre SANS et Utiliser le code ci-dessus (édité).
où avez-vous déclaré/initialisé "isFirttime"? Et à quel point vous lui OUI?
dans
.h
fichier, vous pouvez déclarerBOOL isFirsttime
et àViewdidLoad
mis àYES
de nouveau dans votretextfieldshouldreturn
méthode ilYES
OriginalL'auteur
Déclarer et initialiser une NSString variable pour votre textField texte initial
Puis mettre en œuvre des méthodes:
OriginalL'auteur Vivek Deore