2011-06-20 4 views
12

J'ai cherché sur le web pendant environ une heure maintenant, et je ne trouve aucun code pour m'aider.UITextView démissionne le premier répondeur sur 'Done'

J'ai un UITextView dont j'ai besoin de démissionner le premier répondeur lorsque l'utilisateur appuie sur le bouton «Terminé» sur son clavier.

J'ai vu le code flottant autour de l'Internet comme celui-ci:

-(BOOL) textFieldShouldReturn:(UITextField *)textField { 
[textField resignFirstResponder]; 
return NO; 
} 

Mais cela ne fonctionne pas pour un UITextView. Simplement mis, Comment puis-je savoir quand l'utilisateur appuie sur le bouton Terminé du clavier?

Répondre

44

Implémentez la méthode de délégation shouldChangeTextInRange:.

Utilisez l'approche ci-dessous et la solution ne fonctionne qu'avec @ "\ n" (caractère de nouvelle ligne).

//In you *.h file make sure you add 
@interface v1ViewController : UIViewController <UITextViewDelegate> 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    myTextField.delegate = self; 
} 

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
      replacementText:(NSString *)text 
     { 

      if ([text isEqualToString:@"\n"]) { 

       [textView resignFirstResponder]; 
       // Return FALSE so that the final '\n' character doesn't get added 
       return NO; 
      } 
      // For any other character return TRUE so that the text gets added to the view 
      return YES; 
    } 
+0

Je l'ai mis en place. comment puis-je détecter quand on appuie dessus? –

+0

Définir le délégué de champ de texte comme 'myTextField.delegate = self;' et renvoyer 'YES' dans la méthode' textFieldShouldReturn'; – Jhaliya

+2

@Jhaliya s'il vous plaît Lire le PO, c'est un texte VOIR pas un texte CHAMP –

-3

Vous pouvez utiliser la méthode délégué

- (void)textViewDidEndEditing:(UITextView *)textView { 
    [textView resignFirstResponder]; 
} 

Vous devez définir votre contrôleur en tant que délégué pour la TextView. Pour plus de méthodes, vous pouvez jeter un coup d'oeil ici: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html%23//apple_ref/doc/uid/TP40006897

+0

N'a pas fonctionné, Rien de différent est arrivé dans mon application. J'ai mon délégué mis en place, et j'ai la configuration du clavier comme je le veux, mais ce code ne se fait jamais appeler. –

+2

'textViewDidEndEditing:' est appelé lorsque l'édition est terminée, en d'autres termes lorsque textView a déjà démissionné du premier répondeur alors '[textView resignFirstResponder];' à l'intérieur de celui-ci n'aura aucun effet. – nacho4d

+0

Vous avez raison. Je devrais lire la documentation à nouveau – Pierre

Questions connexes