3

如果我将辞职代码放在我的 if 条件中,则键盘不会辞职,如果我评论 if 条件,我的键盘就会辞职。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    if (searchText.length == 0) {
        [searchBar resignFirstResponder];
    }
}

我想在用户按下“x”按钮时退出键盘,即 UISearchBar 文本为空时。有没有办法做到这一点?

4

4 回答 4

11

只需辞去第一响应者的职务,但在下一个运行循环中,如下所示:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{
    if ([searchText length] == 0) 
    {
        [searchBar performSelector:@selector(resignFirstResponder)
                   withObject:nil 
                   afterDelay:0];
    }
}

经过测试,它可以工作。

于 2014-03-04T16:16:09.637 回答
7

为 switf 3 更新:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    if searchBar.text == nil || searchBar.text == ""
    {
       searchBar.perform(#selector(self.resignFirstResponder), with: nil, afterDelay: 0.1)
    }
}
于 2017-03-25T16:26:01.613 回答
1

添加取消按钮以查看加载和添加方法 -> searchBarCancelButtonClicked

searchBar.showsCancelButton = true

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
  searchBar.resignFirstResponder()
}
于 2020-03-19T19:10:54.663 回答
0
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
NSRange foundRange = [searchText rangeOfString:@"x"];
if (foundRange.location != NSNotFound) {
    if (searchText.length == 0) {
        [searchBar resignFirstResponder];
        }
    }
}
于 2014-03-04T16:11:45.240 回答