当我们向uisearchbar
添加一些文字时,我们会在其右侧看到一个十字。当我们点击此内容时,uisearchbar
中的文字会被清除。这是显示十字架的image。
我需要做的是,我需要知道响应此交叉的事件(点击时)。
当用户点击此十字时,我需要打印NSLog(@"Cross clicked");
我如何以编程方式执行此操作?
答案 0 :(得分:0)
尝试查看UISearchBarDelegate
文档:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText // called when text changes (including clear)
答案 1 :(得分:0)
在UIViewController中使用UISearchbarDelegate-Protocol。有一种方法可以调用。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
答案 2 :(得分:0)
如果您想使用清除按钮执行不同的操作...您可以构建自定义操作而不是默认操作,并在单击时实现任何事件。
UISearchBar *searchBar = yourSearchBar;
UITextField *searchtextfield = [searchBar.subviews objectAtIndex:1];
UIButton *cButton = [UIButton buttonWithType:UIButtonTypeCustom];
cButton.frame = CGRectMake(0, 0, 20 , 20);
cButton.backgroundColor = [UIColor clearColor];
[cButton setImage:[UIImage newImageFromResource:@"yourButtonImage"] forState:UIControlStateNormal];//If you want like the x button put image similar to it.
cButton.contentMode = UIViewContentModeScaleToFill;
[cButton addTarget:self action:@selector(clearButtonPressed) forControlEvents:UIControlEventTouchUpInside];//This is the custom event
[searchtextfield setRightView:cButton];
[searchtextfield setRightViewMode:UITextFieldViewModeAlways];
答案 3 :(得分:0)
如果您希望在用户单击“x”按钮时收到通知,请实施之前用户建议的协议,并添加此实现:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if ([searchText isEqualToString:@""]) {
NSLog(@"%@", @"clear button pressed");
}
}
唯一的缺点是,如果用户退回到空白搜索字段,也会调用它。您需要找到一些方法来确定退格是否是最近的按键,可能是通过检查最后一个UITouch
与退格键的已知位置的位置。