2

苹果文档提供:

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

- (BOOL)textFieldShouldReturn:(UITextField *)textField

参数textField按下返回按钮的文本字段。 Return Value YES文本字段是否应该为返回按钮实现其默认行为;否则,NO

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

我的问题是返回值有什么作用?我一直在此方法中实现行为,因此返回的内容没有区别。这不是执行该操作的正确方法吗?

例如,如果我实现了一个搜索功能,我应该在这个方法中还是在其他地方触发搜索操作。

4

2 回答 2

6

这是当用户点击 Return 键盘键(无论它被标记为什么)时触发操作的正确方法。

委托方法的返回值textFieldShouldReturn:几乎无关紧要。如果您正在处理单个文本字段,那么这绝对没关系。

不久前我遇到了一个问题,这让我意识到在正确的情况下,返回值确实很重要。我有一个带有几个文本字段的屏幕,然后是一个文本视图。我正在使用此文本字段委托方法将第一响应者从文本字段更改为文本字段到文本视图。我发现如果我YES在这个委托方法中返回,然后让文本视图成为第一响应者,则换行符被发送到文本视图。

因此,NO为了安全起见,我现在总是从这个委托方法返回。

于 2012-12-21T17:16:04.350 回答
2

当您按下键盘上的返回按钮时,将textFieldShouldReturn调用。我从未经历过返回值之间的任何差异。

自定义示例:

如果当用户从第一个文本字段按下返回按钮时您有两个文本字段,您可以通过以下方式将焦点放在第二个字段上:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSLog(@"textFieldShouldReturn:");
    if (textField.tag == 1)
    {
        UITextField *passwordTextField = (UITextField *)[self.view viewWithTag:2];
        [passwordTextField becomeFirstResponder];
    }
    else
    {
        [textField resignFirstResponder];
    }
    return YES;
}

因此,您可以使用此委托方法来触发搜索功能。

于 2012-12-21T17:15:55.803 回答