2012-04-23 24 views
13

posso modificare il colore di clearButtonMode su un campo di testo?UITextField clearButtonMode color

mostra un x che è di colore grigio scuro per eliminare il textField,

ma Posso mostrare questo tasto con il colore bianco?

grazie

risposta

30

Avrai bisogno di creare la propria immagine del pulsante chiaro in questo caso. Suggerirei di prendere uno screenshot del pulsante Cancella e di modificarlo in Photoshop.

È possibile scattare quell'immagine e creare un UIButton con le dimensioni dell'immagine. Da lì puoi impostarlo come rightView di UITextField. In questo modo:

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; 

ho scritto che, senza il controllo della sintassi e cosa non così ti consigliamo di provarlo prima di eseguirlo. Dovrai anche sostituire clear_button.png con qualunque sia il nome dell'immagine.

Avrai anche bisogno di scrivere il tuo metodo per cancellare il campo di testo.

+3

Questo non funziona più con iOS 7. Invece è necessario creare il pulsante con una cornice. – Legoless

+7

Apple dovrebbe davvero fornire un modo elegante per far sì che ciò accada – vzm

7

un modo più pulito è quello di implementare una categoria a UITextField con questo metodo:

- (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

Penso che dovresti usare il parametro 'image' invece del creato" clear-button "UIImage. – ingaham

5

versione 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

Si prega di non aggiungere la [stessa risposta] (http://stackoverflow.com/a/39831522/5292302) a più domande. Rispondi al migliore e contrassegna il resto come duplicato. Vedi [È accettabile aggiungere una risposta duplicata a diverse domande?] (Http://meta.stackexchange.com/questions/104227/is-it-acceptable-to-add-a-duplica te-answer-to- diverse-domande) –

0

Al momento si sta configurando l'textField, uso:

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

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