在UISearchBar中按"x"时关闭键盘

bru*_*uno 3 uisearchbar uikeyboard ios resignfirstresponder

如果我将resign代码放在​​我的if条件下键盘不会退出,如果我评论if条件我的键盘辞职.

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

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

Raf*_*fAl 10

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

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

经过测试,确实有效.


Amm*_*mad 6

为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)
    }
}
Run Code Online (Sandbox Code Playgroud)