2012-04-23 15 views
13

czy mogę zmienić kolor clearButtonMode na textField?UITextField clearButtonMode color

pokazuje X, który jest szary ciemny kolor, aby usunąć textField,

ale mogę pokazać ten przycisk z białym kolorze?

dzięki

Odpowiedz

30

Musisz stworzyć własny przycisk Wyczyść obraz w tej sprawie. Sugerowałbym zrobienie zrzutu ekranu wyraźnego przycisku i edycji w Photoshopie.

Możesz zrobić to zdjęcie i utworzyć UIButton z wymiarami obrazu. Stamtąd możesz ustawić go jako prawy widok UITextField. Podobnie jak:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:[UIImage imageNamed:@"clear_button.png"] forState:UIControlStateNormal]; 
[button setFrame:CGRectMake(0.0f, 0.0f, 15.0f, 15.0f)]; // Required for iOS7 
theTextField.rightView = button; 
theTextField.rightViewMode = UITextFieldViewModeWhileEditing; 

Napisałem to bez sprawdzania składni i co nie, więc będziesz chciał to sprawdzić przed uruchomieniem. Będziesz także chciał zastąpić clear_button.png dowolną nazwą obrazu.

Należy również napisać własną metodę czyszczenia pola tekstowego.

+3

To nie działa już w systemie iOS 7. Zamiast tego należy utworzyć przycisk z ramką. – Legoless

+7

Apple powinien naprawdę zapewnić elegancki sposób, aby to się stało – vzm

7

Czystsze sposobem jest wdrożenie kategorię na UITextField z tą metodą:

- (void)modifyClearButtonWithImage:(UIImage *)image { 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setImage:image forState:UIControlStateNormal]; 
    [button setFrame:CGRectMake(0.0f, 0.0f, 15.0f, 15.0f)]; 
    [button addTarget:self action:@selector(clear:) forControlEvents:UIControlEventTouchUpInside]; 
    self.rightView = button; 
    self.rightViewMode = UITextFieldViewModeWhileEditing; 
} 

-(IBAction)clear:(id)sender{ 
    self.text = @""; 
} 
+0

Myślę, że powinieneś użyć parametru 'image' zamiast stworzonego" Ull "przycisku" clear-button ". – ingaham

5

wersji Swift:

extension UITextField { 
    func modifyClearButtonWithImage(image : UIImage) { 
    let clearButton = UIButton(type: .Custom) 
    clearButton.setImage(image, forState: .Normal) 
    clearButton.frame = CGRectMake(0, 0, 40, 40) 
    clearButton.contentMode = .ScaleAspectFit 
    clearButton.addTarget(self, action: #selector(UITextField.clear(_:)), forControlEvents: .TouchUpInside) 
    self.rightView = clearButton 
    self.rightViewMode = .WhileEditing 
} 

     func clear(sender : AnyObject) { 
     self.text = "" 
    } 

} 
+0

Proszę nie dodawać [tej samej odpowiedzi] (http://stackoverflow.com/a/39831522/5292302) do wielu pytań. Odpowiedz na najlepszą i oznacz flagę jako duplikaty. Zobacz [Czy dopuszczalne jest dodanie duplikowanej odpowiedzi na kilka pytań?] (Http://meta.stackexchange.com/questions/104227/is-it-acceptable-to-add-a-duplica te-answer-to- kilka pytań) –

0

w momencie konfigurujesz textField, przeznaczenie:

let clearButton : UIButton = textField.value(forKey: "_clearButton") as! UIButton 
let image = UIImage(named: "ClearWhite") 

clearButton.setImage(image, for: .normal) 
clearButton.backgroundColor = UIColor.clear