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
}}