添加搜索栏方法

时间:2012-02-01 15:48:42

标签: iphone objective-c

当我们向uisearchbar添加一些文字时,我们会在其右侧看到一个十字。当我们点击此内容时,uisearchbar中的文字会被清除。这是显示十字架的image

我需要做的是,我需要知道响应此交叉的事件(点击时)。

当用户点击此十字时,我需要打印NSLog(@"Cross clicked");

我如何以编程方式执行此操作?

4 个答案:

答案 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

http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UISearchBarDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UISearchBarDelegate

答案 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与退格键的已知位置的位置。