Iphone 使用search returnkey辞去UITextField的FirstResponder

Iphone 使用search returnkey辞去UITextField的FirstResponder,iphone,objective-c,ios,Iphone,Objective C,Ios,简单问题:如果我的“完成”键是“搜索”,我如何退出文本字段。基本上,如果用户不想搜索,而是想取消,我该怎么办 谢谢返回按钮上的文本与讨论无关。您想知道如何在不按下返回按钮的情况下辞去第一响应者的职务,有几种方法可以做到这一点 使用文本字段的inputAccessoryView在键盘上方的工具栏中显示单独的取消按钮。 在字段的superview上使用点击手势识别器来识别用户在字段外点击的时间,并调用[self.view endEditing:YES],其中self是您的视图控制器。这将导致第一响应

简单问题:如果我的“完成”键是“搜索”,我如何退出文本字段。基本上,如果用户不想搜索,而是想取消,我该怎么办


谢谢

返回按钮上的文本与讨论无关。您想知道如何在不按下返回按钮的情况下辞去第一响应者的职务,有几种方法可以做到这一点

使用文本字段的inputAccessoryView在键盘上方的工具栏中显示单独的取消按钮。 在字段的superview上使用点击手势识别器来识别用户在字段外点击的时间,并调用[self.view endEditing:YES],其中self是您的视图控制器。这将导致第一响应者辞职。这在滚动视图中非常挑剔。 在编辑时,将当前视图控制器的rightBarButtonItem换成cancel bar按钮项,假设此时屏幕上有一个UINavigationBar。编辑结束时,将常规右栏按钮项(如果有)调回。
您可以使用:SearchBar的取消按钮,并且需要实现此SearchBar委托:

如果用户不想搜索,这是让响应者辞职的正确方法

看看如何在UISearchBar中添加内置的取消按钮。选中属性显示取消按钮红色箭头高亮显示

编辑:

步骤1: 有条件地检查文本字段的文本是否为空?如果是,请为TextField辞职FirstResponder。需要使用以下代码将UITextField的委托设置为self:

txtField.delegate = self;
或者,您也可以通过将TextField的委托连接到文件的所有者,在界面生成器中执行相同的操作

步骤2:您需要实现此委托方法

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
   if([textField.text isEqualToString:@""])
   {
        [textField resignFirstResponder];
   }
    return YES;
}
编辑-1:

现在创建一个带有一个标有“取消”的工具栏按钮的UIToolbar

完成后:

您可以为UIToolBar编写按钮单击事件:

-(IBAction)cancelClicked:(id)sender
{
    [txtField resignFirstResponder];
}
完成后,您现在可以只写:

txtField.inputAccessoryView = toolbarOutlet;

希望这对您有所帮助。

在导航栏中放置一个栏按钮,只需重新指定第一响应者即可隐藏键盘。同样的问题如下:-这不是我想要的,因为文本字段位于UITableView单元格中,而不是UISearchBar。谢谢您的回答。@derek.lo:是否有任何特定的理由在UITableViewCell下使用UITextField而不是UISearch栏?该文本字段不是用于在tableview中搜索结果,而是用于发送对DB中项目的请求。因此,它在单元格中看起来更好。那么,当文本字段处于焦点且键盘正在显示时,为什么要在键盘上显示搜索按钮?@derek.lo:请检查我答案的编辑部分。我已经编辑了我的答案,使之更为可行,因为在您的案例中,您有一个UITextField而不是UISearchBar。是的,这是我需要知道的。谢谢@warrenm
txtField.inputAccessoryView = toolbarOutlet;