6

我试过了:

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 imageNamed:@"x-button"] forState:UIControlStateNormal];//your button image.
    cButton.contentMode = UIViewContentModeScaleToFill;
    [cButton addTarget:self action:@selector(xButtonPressed) forControlEvents:UIControlEventTouchUpInside];//This is the custom event
    [searchtextfield setRightView:cButton];
    [searchtextfield setRightViewMode:UITextFieldViewModeWhileEditing];

但它不能很好地工作......它显示自定义按钮,但是当你输入一些东西时,旧的又回来了......

我怎样才能做到这一点?

4

6 回答 6

8

如果您想在 UISearchBar 中设置自定义清除按钮,请尝试以下操作:

[[UISearchBar appearance] setImage:[UIImage imageNamed:@"MyClearButton.png"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal];

不要忘记设置图像UIControlStateHighlighted

[[UISearchBar appearance] setImage:[UIImage imageNamed:@"HighlightedClearButton.png"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateHighlighted];
于 2013-10-17T22:01:40.257 回答
7

你需要以下

[searchBar setImage:[UIImage imageNamed:@"image1"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateHighlighted];
[searchBar setImage:[UIImage imageNamed:@"image2"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal];

如果您想使用相同的图像,强烈建议从UIControlStateHighlighted开始按此顺序放置字符串:image1=image2=image。

在 iOS7 中,这很奇怪,但 UIControlStateNormal 和 UIControlStateHighlighted 的直接顺序不起作用。

于 2014-01-17T08:53:44.470 回答
0

你可以隐藏你的取消按钮searchBarTextDidBeginEditing

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsCancelButton:NO animated:YES];
}  

最神奇的是,您还可以通过以下方式隐藏您的清除按钮

UITextField *textField=(UITextField*)[[searchBar subviews]objectAtIndex:1];
textField.clearButtonMode=UITextFieldViewModeNever; 

按照我的回答敌人更多信息链接

于 2012-12-13T15:21:25.167 回答
0

设置clearButtonModeUITextFieldViewModeNeverrightViewMode_UITextFieldViewModeAlways

于 2012-12-13T15:22:28.133 回答
0

在 swift 2.2 中,以下代码对我有用

        [UISearchBar .appearance().setImage(UIImage(named: "search_clear_icon"), forSearchBarIcon: .Clear, state: .Normal)]

    [UISearchBar .appearance().setImage(UIImage(named: "search_clear_icon"), forSearchBarIcon: .Clear, state: .Highlighted)]
于 2017-04-20T09:56:42.657 回答
0

Swift 4.2、4.1+malex答案,

UISearchBar.appearance().setImage(UIImage(named: "image1"), for: .clear, state: .normal)
UISearchBar.appearance().setImage(UIImage(named: "image2"), for: .clear, state: .highlighted)

我也在这里clear button tintColor回答了这个问题,以便与定制一起设置results button

于 2018-07-15T13:32:45.220 回答