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

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

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

这是不同返回types的方法

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

通过我们可以隐藏在我的手机键盘。 但返回types“是”还是“否”的含义是什么? 我没有看到任何区别。

textFieldShouldReturn是您可以在键盘上处理返回button的地方。

textFieldShouldReturn询问委托,如果文本字段应该处理按下返回button。

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

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

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

除了这里的其他答案(基本上确认没有什么大的区别,通过返回YES等没有自动退出第一响应者),我发现了一个完全依赖于返回值奇怪事件 ,特别是对于UITextField与autocorrection。

假设以下场景:

  1. 你有一个启用自动UITextField

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

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

返回YES时的结果YES

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

我testing了一些其他类似的回应:

  • “东西”改为“东西”
  • “十”到“十”
  • 而且,有一次“Car”变成了“Carl”,另一次“Car”变成了“Carp”

返回时的结果NO

正常 。 文本字段的文本将不会被更改。

综上所述…

当返回YES ,文本字段可以自动更正已经正确的单词。 但是,它并不是呈现出那些“自动更正文本泡泡”之一,因为这些是合法的词语。

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

注意:在这两种情况下,错误拼写的单词总是会被纠正。 例如:

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

根据个人经验我看到的一个区别是,如果您返回YES,则会触发自动更正和自动大写,如果您返回NO,则不会。 可能还有其他的事情可以做,但这是我迄今可以注意到的。

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