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

に設定clearButtonModeする UITextFieldViewModeNever_rightViewModeUITextFieldViewModeAlways

于 2012-12-13T15:22:28.133 に答える