如果我在调用textFieldShouldReturn时返回"YES"或"NO",有什么区别

iKu*_*hal 33 iphone uitextfield ios

这是文本字段委托方法,但我对返回类型有疑问

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

   return NO;
}  
Run Code Online (Sandbox Code Playgroud)

这是具有不同返回类型的相同方法

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

   return YES;
 }
Run Code Online (Sandbox Code Playgroud)

我们都可以在i手机中隐藏键盘.但是返回类型"YES"或"NO"的含义是什么.我没有看到任何区别.

bee*_*con 29

除了这里的其他答案(基本上确认没有重大差异,没有通过返回YES等自动重新响应第一响应者),我发现了一个完全依赖于返回值奇怪事件,特别是对于UITextField具有自动更正的情况.

假设以下场景:

  1. UITextField启用了自动更正功能

  2. 您已经实现了类似这样的委托方法(文本字段被取消):

    - (BOOL)textFieldShouldReturn:(UITextField *)textField 
    {
        if (textField == self.myAutocorrectingTextField) {
            [self.myAutocorrectingTextField resignFirstResponder];
        }
        return YES; 
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 您运行应用程序,在文本字段中键入" Cable ",然后按返回键,将其作为第一响应者重新签名.

返回时的结果YES:

  • 文本字段的文本将从" 电缆 " 更改为" 电缆 "!

我测试过一些其他类似的答案:

  • "Stuff"改为"Stuffs"
  • "十"到"十"
  • 并且,有一次"汽车"改为"卡尔",另一次"汽车"改为"鲤鱼"

返回时的结果NO:

正常.文本字段的文本不会更改.

综上所述...

返回时YES,文本字段可能会自动更正已经正确的单词.但是,它不会出现其中一个"自动更正的文本气泡",因为这些是合法的词.

返回时NO,文本字段不会自动更正已经正确的单词.

注意: 在这两种情况下,将始终纠正拼写错误的单词.例如:

  • 如果您要键入"Wev",则应显示"自动更正文本气泡",文本为"Web".如果按下Return键,无论委托的返回值如何,文本都将替换为更正.


Fab*_*iez 9

根据个人经验,我看到的一个区别是,如果您返回YES,则会触发自动更正和自动大写,如果您返回NO,则不会.可能还有其他事情要做,但到目前为止我都能注意到这一切.

这就是"默认行为"的含义.


Cra*_*lon -5

textFieldShouldReturn 是您可以处理键盘上的 Return 按钮的地方。

textFieldShouldReturn 询问委托文本字段是否应处理返回按钮的按下。

如果您实现自己的代码来处理返回按钮,您应该返回 NO,或者返回 YES 以便以默认方式处理。

IOS 文档状态:每当用户点击返回按钮时,文本字段都会调用此方法。您可以使用此方法在点击按钮时实现任何自定义行为。

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

  • 您基本上刚刚发布了苹果参考资料的内容。这里没有新的信息或见解。 (4认同)
  • @CraigMellon 他显然是在问默认行为是什么。 (2认同)