quelle est la différence si je returnne "OUI" ou "NON" quand j'appelle textFieldShouldReturn

C'est la méthode du délégué de champ de text mais j'ai des doutes sur le type de return

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

et c'est la même méthode avec un type de return différent

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

par les deux nous pouvons cacher le keyboard dans le téléphone. mais quelle est la signification du type de return "OUI" ou "NON". Je ne vois aucune différence.

Le textFieldShouldReturn est un endroit où vous pouvez manipuler le button de return sur le keyboard.

textFieldShouldReturn request au délégué si le champ de text doit traiter l'appui sur le button de return.

Si vous implémentez votre propre code pour traiter le button de return, vous devez renvoyer NON ou renvoyer YES pour qu'il soit traité par défaut.

L'état IOS Docs: Le champ de text appelle cette méthode chaque fois que l'user appuie sur le button de return. Vous pouvez utiliser cette méthode pour implémenter tout comportement personnalisé lorsque le button est appuyé.

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

En plus des autres réponses ici (qui confirment essentiellement qu'il n'y a pas de différence majeure, pas de démission automatique du premier répondant en returnnant YES , etc.), j'ai découvert une occurrence étrange complètement dépendante de la valeur de return , spécifiquement pour un UITextField avec autocorrection.

Supposons le scénario suivant:

  1. Vous avez un UITextField avec l'autocorrection activée

  2. Vous avez implémenté la méthode delegate quelque chose comme ceci (où le champ de text est résigné):

     - (BOOL)textFieldShouldReturn:(UITextField *)textField { if (textField == self.myAutocorrectingTextField) { [self.myAutocorrectingTextField resignFirstResponder]; } return YES; } 
  3. Vous exécutez l'application, tapez " Câble " dans le champ de text, puis appuyez sur la touche de return, en le démissionnant en tant que premier répondeur.

Le résultat en returnnant YES :

  • Le text du champ de text aura été changé de " Câble " à " Câbles "!

J'ai testé une poignée d'autres mots qui répondent de la même manière:

  • "Stuff" changé en "Stuffs"
  • "Ten" à "Tens"
  • Et, une fois "Car" changé en "Carl", une autre fois "Car" changé en "Carp"

Le résultat lors du return NO :

Normal . Le text du champ de text n'aura pas été modifié.

En résumé…

Lorsque vous renvoyez YES , le champ de text peut corriger automatiquement les mots déjà corrigés. Cependant, il ne présente pas l'une de ces "bulles de text autocorrigantes", car ce sont des mots légitimes.

Lorsque vous renvoyez NO , le champ de text ne corrige pas automatiquement les mots déjà corrigés.

Remarque: Dans les deux cas, les mots incorrectement orthographiés seront toujours corrigés. Par exemple:

  • Si vous deviez taper "Wev", une "bulle de text d'autocorrection" devrait apparaître avec le text "Web". Si vous appuyez sur la touche Retour, quelle que soit la valeur renvoyée par le délégué, le text sera remplacé par la correction.

Une différence que je vois sur la base de l'expérience personnelle est que si vous returnnez OUI, la correction automatique et la capitalisation automatique sont déclenchées, si vous renvoyez NON, elles ne le sont pas. Il pourrait y avoir d'autres choses faites, mais c'est tout ce que j'ai pu remarquer jusqu'ici.

C'est ce qu'ils entendent par "comportement par défaut".