【问题标题】:resignFirstResponder for UITextField with search returnkey带有搜索返回键的 UITextField 的 resignFirstResponder
【发布时间】:2012-03-26 04:40:38
【问题描述】:

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

谢谢

【问题讨论】:

标签: iphone objective-c ios


【解决方案1】:

您可以使用:SearchBar 的取消按钮,需要实现此SearchBar delegate

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    isSearching = NO; //This is a flag which specifies if searching is going on or not.
    searchBar.text = @""; //Clears out search bar text
    [self resetSearch]; //Reset search resets all the flags and variables.
    [self.leadsTable reloadData]; //Reloads the tableView
    [searchBar resignFirstResponder]; //Resigns responder from Search bar
}

如果用户不想搜索,这是退出响应者的正确方法。

看看如何在 UISearchBar 中添加一个内置的取消按钮。检查属性“Shows Cancel Button”(红色箭头突出显示)

编辑:

第 1 步: 有条件地检查您的 textField 的文本是否为空白?如果是这样,请为 TextField 指定 resignFirstResponder。您需要使用代码将 UITextField 的 Delegate 设置为 self

txtField.delegate = self;

或者您可以通过将 TextField 的 delegate 连接到 File's Owner 从界面构建器中执行相同操作。

STEP-2:你需要实现这个委托方法。

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

EDIT-1:

现在创建一个 UIToolbar,其中包含一个标记为“取消”的栏按钮

一旦你这样做了:

你可以为 UIToolBar 编写一个按钮点击事件:

-(IBAction)cancelClicked:(id)sender
{
    [txtField resignFirstResponder];
}

一旦你完成了,你现在就可以写了:

txtField.inputAccessoryView = toolbarOutlet;

希望对你有所帮助。

【讨论】:

  • 这不是我想要的,因为 textField 位于 UITableView 单元格内,而不是 UISearchBar。不过还是谢谢你的回答。
  • @derek.lo: 在 UITableViewCell 下有 UITextField 而不是 UISearch 栏的任何具体原因?
  • 文本字段不是为了在表格视图中搜索结果,而是为了发送对数据库中项目的请求。因此,它在单元格中看起来更好。
  • 那么当你的 textField 处于焦点并且键盘出现时,为什么你在键盘上显示一个搜索按钮?
  • @derek.lo:请检查我回答的 EDIT 部分。我已经编辑了我的答案并使它更可行,因为在你的情况下你有一个 UITextField 而不是 UISearchBar
【解决方案2】:

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

  1. 使用文本字段的inputAccessoryView 在键盘上方的工具栏中显示一个单独的取消按钮。
  2. 在字段的超级视图上使用点击手势识别器来识别用户何时在字段外点击,并调用[self.view endEditing:YES](其中self 是您的视图控制器)。这将导致第一响应者辞职。 (这在滚动视图中非常挑剔。)
  3. 在编辑时将当前视图控制器的rightBarButtonItem 替换为取消栏按钮项,假设您当时在屏幕上有一个UINavigationBar。编辑结束时,换回常规的右栏按钮项(如果有)。

【讨论】:

  • 是的,这就是我需要知道的。谢谢@warrenm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多