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

时间:2012-07-19 10:07:37

标签: iphone ios uitextfield

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

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

   return NO;
}  

这与使用不同返回类型的方法相同

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

   return YES;
 }

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

4 个答案:

答案 0 :(得分:29)

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

假设以下情形:

  1. 您有UITextField启用了自动更正

  2. 您已经实现了类似的委托方法(文本字段被重新签名):

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

  4. 返回YES时的结果:

    • 文本字段的文本已从“电缆”更改为“电缆”!

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

    • “Stuff”更改为“Stuffs”
    • “十”到“十”
    • 并且,有一次“Car”改为“Carl”,另一次“Car”改为“Carp”

    返回NO时的结果:

    <强>正常即可。文本字段的文本不会更改。

    摘要......

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

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

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

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

答案 1 :(得分:9)

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

这就是“默认行为”的意思。

答案 2 :(得分:0)

我发现的最重要的区别是,如果文本字段发出控制事件UIControlEventEditingDidEndOnExit,这将导致文本字段辞退第一响应者 textFieldShouldReturn实现返回NO

答案 3 :(得分:-3)

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

textFieldShouldReturn询问代理文本字段是否应该按下返回按钮。

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

IOS Docs声明: 只要用户点击返回按钮,文本字段就会调用此方法。点击按钮时,您可以使用此方法实现任何自定义行为。

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