gpt4 book ai didi

iphone - 点击 X 按钮时从 UISearchBar 中关闭键盘

转载 作者:行者123 更新时间:2023-12-03 18:20:20 27 4
gpt4 key购买 nike

我正在使用 UISearchBar(但不是通常结合使用的 SearchDisplayController),并且我想在您点击“X”按钮时关闭键盘。

我关注了TomSwift's suggestion当点击“X”时被调用,效果很好。但是,从文本字段中退出第一响应者并在 UISearchBar 实例中调用(两者都使用 resignFirstResponder)不会使键盘消失。

当用户点击 X 按钮时,有没有办法摆脱键盘?

这是我为获取“清除”通知所做的操作:

- (void)viewDidLoad:
{
for (UIView* v in searchBar.subviews)
{
if ( [v isKindOfClass: [UITextField class]] )
{
UITextField *tf = (UITextField *)v;
tf.delegate = self;
break;
}
}
}

然后我有我的类设置来实现 UISearchBarDelegate 和 UITextFieldDelegate。

让该类充当文本字段委托(delegate)可以让我接到此电话:

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
[textField resignFirstResponder];
[self.searchBar resignFirstResponder];
return YES;
}

我已经尝试了所有我能想到的方法。我尝试的最后一件事是找到一种方法来发出 UISearchDelegate 将在我的 Controller 类上调用的“searchBarCancelButtonClicked”,但我不确定如何执行此操作,因为 UISearchBar 似乎没有任何直接方法使用此名称调用。

最佳答案

汤姆的回答让我思考。如果用户点击清除按钮时搜索栏还不是firstResponder,我们可以等待它成为firstResponder,然后让它退出FirstResponder;即沿着以下路线:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[self performFilteringBySearchText: searchText]; // or whatever

// The user clicked the [X] button or otherwise cleared the text.
if([searchText length] == 0) {
[searchBar performSelector: @selector(resignFirstResponder)
withObject: nil
afterDelay: 0.1];
}
}

工作起来很有魅力,而且不像汤姆的恕我直言那样老套。

关于iphone - 点击 X 按钮时从 UISearchBar 中关闭键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4190459/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com