Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is the difference if i return "YES" or "NO" when i call textFieldShouldReturn

This is the text field delegate method but i have doubt about return type

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

   return NO;
}  

and this is the same method with different return type

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

   return YES;
 }

by both we can hide key board in i phone . but what is the meaning of return type "YES" or "NO". I am not seeing any difference.

like image 736
iKushal Avatar asked Jul 19 '12 10:07

iKushal


2 Answers

In addition to the other answers here (which essentially confirm there's no major difference, no auto-resigning of the first responder by returning YES, etc.), I've discovered a strange occurrence completely dependent on the return value, specifically for a UITextField with autocorrection.

Assume the following scenario:

  1. You have a UITextField with autocorrection enabled

  2. You've implemented the delegate method something like this (where the text field gets resigned):

    - (BOOL)textFieldShouldReturn:(UITextField *)textField 
    {
        if (textField == self.myAutocorrectingTextField) {
            [self.myAutocorrectingTextField resignFirstResponder];
        }
        return YES; 
    }
    
  3. You run the app, type "Cable" into the text field, then press the return key, resigning it as first responder.

The outcome when returning YES:

  • The text field's text will have been changed from "Cable" to "Cables"!

I have tested a handful of other words that respond similarly:

  • "Stuff" changed to "Stuffs"
  • "Ten" to "Tens"
  • And, one time "Car" changed to "Carl", another time "Car" changed to "Carp"

The outcome when returning NO:

Normal. The text field's text will not have been changed.

In Summary...

When returning YES, the text field may autocorrect already-correct words. It does not, however, present one of those "autocorrect text bubbles", because these are legitimate words.

When returning NO, the text field will not autocorrect already-correct words.

Note: In both cases, incorrectly-spelled words will always be corrected. For example:

  • If you were to type "Wev", an "autocorrection text bubble" should appear with the text "Web". If you hit the Return key, regardless of the delegate's return value, the text will be replaced with the correction.
like image 170
beebcon Avatar answered Sep 20 '22 01:09

beebcon


One difference that I see based on personal experience is that if you return YES, auto correction and auto capitalization are triggered, if you return NO, they are not. There might be other things done, but that's all I could notice so far.

That's what they mean by "default behavior".

like image 11
Fabien Warniez Avatar answered Sep 20 '22 01:09

Fabien Warniez