具有搜索返回键的UITextField的resignFirstResponder

时间:2012-03-26 04:40:39

标签: iphone objective-c ios

简单的问题:如果我的“完成”键是搜索,我怎么能辞去我的文本域。基本上,如果用户不想搜索,我该怎么办,而是想取消...

感谢

2 个答案:

答案 0 :(得分:2)

您可以使用: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中添加内置取消按钮。检查属性“显示取消按钮”(红色箭头突出显示)

enter image description here

修改

<强> STEP-1: 有条不紊地检查textField的文本是否为空白?如果是这样,则为TextField的resignFirstResponder。您需要使用代码将代理设置为self作为UITextField:

txtField.delegate = self;

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

第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;

希望这会对你有所帮助。

答案 1 :(得分:1)

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

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