Je veux masquer le clavier lorsqu'un utilisateur appuie retour dans C'est ce que j'ai fait: p> 1) J'ai créé une application basée sur la vue en XCode4. P> 2) dans .xib créé 4) ajouté 5) Ajouté Voici les codes: P> . /strong> uitextview code> objet dans iPhone. Cependant, mystérieusement cela ne fonctionne pas pour
uitextview code> mais travaillant pour
uitextfield code>. Je suis incapable de comprendre pourquoi ...
uitextview code>,
uitextfield code> et
uibutton code> Objets p>
uitextfield code> et
uitexview code> délégués au propriétaire du fichier dans les points de vente strong> em> p>
TextfieldShouldeturn Code> Fonction dans .m p>
- (IBAction)doSomething:(id)sender {
[textBoxLarge resignFirstResponder];
[textBoxLittle resignFirstResponder];
}
7 Réponses :
Vous devez écrire du code dans uitextviewdeelegate code> et attribuer à votre classe. p>
- (BOOL) TextView: (UITEXTVIEW *) TextViettextinrange: (Nstring) Texte de remplacement: (Nstring *) Texte {Si ([Texte ISequalTostring: @ "\ n"]) {[TextView Renignfiresponder]; } retour oui; }
Je l'ai eu J'ai écrit @interface KeyboardDisapparViewController: UIViewController
Ouais dans le fichier .m. Dans .h Fichier Conforme à UitextViewDelegate comme vous l'avez fait pour UitextFieldDelegate
écrire comme ceci @interface KeyboardDisapparViewController: UIVIEWCONTROLLER
Simple:
Cependant, il ne fonctionne toujours pas ... :( Le clavier se cache pour Textfield mais pas pour TextView ... :( :( :(
Non, tout mon code est identique que ci-dessus. Je viens de changer @interface KeyboardDisapparViewController: UIViewController
Trois choses:
Faites de votre vue Implémenter UitextViewelegate. P>
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if ([text isEqualToString:@"\n"]) { [textView resignFirstResponder]; } return YES; }
Trick simple
Définir délégué code> pour la vue de texte, puis
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"])
{
[textView resignFirstResponder];
return NO;
}
return YES;
}
Vous avez codé dans le fichier .H.
@interface keyboardDisappearViewController : UIViewController <UITextFieldDelegate> { UITextView *textBoxLarge; UITextField *textBoxLittle; } @property (nonatomic, retain) IBOutlet UITextField *textBoxLarge; @property (nonatomic, retain) IBOutlet UITextField *textBoxLittle; - (IBAction)doSomething:(id)sender; @end
Vous avez changé le iboutlet code>, mais n'a pas changé l'ivar? Il ne devrait probablement pas avoir l'ivar en premier lieu, mais simplement laisser le compilateur le synthétiser, mais avoir certainement l'ivar non correspondant à la propriété ne peut être bon. Et quand même, lui dire de ne pas utiliser de
uitextview code> juste éviter la question, étant donné que c'était le problème qu'il essayait de résoudre.
Utilisez ce code
Inherit UitextViewDelegate protocole dans votre mode de vue Ajoutez le texte p> dans ViewDidLoLoLoLoLoLoLoad Définissez-vous comme délégué: p> - (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
return NO;
}
points de clé strong> Quelqu'un doit être à l'écoute de la touche de retour Appuyez sur P>
Quelqu'un doit rejeter manuellement le clavier p>
func textFieldShouldReturn(textField : UITextField) -> Bool {
self.titleField.resignFirstResponder(); //Here's the key!!!!!
return true; //true just says 'default behavior'
}
Si vous êtes venu ici à la recherche de la solution Swift, comme si je l'ai fait, vous êtes ici :)
extension keyboardDisappearViewController : UITextViewDelegate { func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { if(text == "\n") { textView.resignFirstResponder() } return true }}