È possibile personalizzare l'immagine del pulsante di cancellazione in un UITextField
? Ho uno sfondo scuro nel campo di testo e la "x" non è abbastanza visibile.Personalizzato UITextField tasto di cancellazione
risposta
È possibile impostare il proprio pulsante di cancellazione personalizzato sulla proprietà rightView
del campo di testo. Assicurati di impostare la proprietà rightViewMode
su UITextFieldViewModeWhileEditing
o UITextFieldViewModeAlways
, qualunque sia la soluzione giusta per il tuo caso.
Se la posizione del pulsante non è adatta alle proprie esigenze, è possibile eseguire la sottoclasse di UITextField
e ignorare il metodo rightViewRectForBounds:
.
La documentazione dice il predefinito per la proprietà clearButtonMode
è UITextFieldViewModeNever
, ma ho il sospetto Interface Builder può impostare per UITextFieldViewModeWhileEditing
- Assicurarsi di impostare al "mai" valore in modo che non appare.
Tutte queste proprietà sono documentate in UITextField Class Reference.
Questo dovrebbe essere più semplice della sottoclasse di UITextField come proposto da Sebastian. – Francesco
Nota: Sembra che 'rightViewMode' e' clearButtonMode' abbiano 'UITextFieldViewModeAlways' che si comportano diversamente. Quest'ultimo non mostrerà la vista quando il campo è vuoto, mentre il primo lo farà. – samvermette
La proprietà rightView sarà solo una vista. Dovrai aggiungere un UIButton e implementare ancora i tuoi metodi chiari. –
Un approccio sarebbe quello di creare un numero personalizzato UITextField
che ha l'immagine desiderata come sottoview e cancella il campo di testo genitore quando viene toccato. Disabilita il pulsante predefinito e aggiungi il tuo comportamento personalizzato in questo campo di testo personalizzato.
Questo dovrebbe iniziare. Se ci sono altre domande concrete, sentiti libero di modificare la tua domanda o commento qui se si tratta di un problema minore.
È possibile accedere a tale struttura utilizzando KVO:
UIButton *clearButton = [myTextField valueForKey:@"_clearButton"];
[clearButton setImage:[UIImage new] forState:UIControlStateNormal];
Questo funziona per me su iOS 7. –
liscio! a Apple piacciono cose del genere? perché tutte le altre soluzioni che ho visto finora hanno comportato la creazione di un nuovo buttom all'interno di una vista e l'impostazione di rightview su uitextfield –
@ MaximilianKörner, ho usato questo e altri KVO per accedere alle proprietà inaccessibili nella nostra applicazione e rilasciato al conservare senza problemi. – Laszlo
Testato iOS7.0 - 8.4
E 'possibile aggiornare il BackgroundImage di tutti i pulsanti chiari basati sul metodo UIAppearance. Purtroppo non è possibile aggiornare l'immagine del pulsante:
UIButton *defaultClearButton = [UIButton appearanceWhenContainedIn:[UITextField class], nil];
[defaultClearButton setBackgroundImage:[UIImage imageNamed:@"clearButtonBkg1.png"] forState:UIControlStateNormal];
Utilizzando le seguenti immagini, il risultato è la seguente tasto chiaro:
Sfondo bianco immagine @ 3x:
Nota: questo aggiornerà l'immagine di sfondo di Tutti i pulsanti contenuti in campi di testo
Swift 2.2 +/iOS 9+ versione di risposta di @Brody Robertson:
let defaultClearButton = UIButton.appearanceWhenContainedInInstancesOfClasses([UITextField.self])
defaultClearButton.setBackgroundImage(UIImage(named: "ClearIcon"), forState: UIControlState.Normal)
dipende @Tuss László di answer
Swift 3,0
myTextField.clearButtonMode = .whileEditing
if let clearButton = myTextField.value(forKeyPath: "_clearButton") as? UIButton {
clearButton.setImage(UIImage(named:"myImage"), for: .normal)
clearButton.setImage(UIImage(named:"myImage"), for: .highlighted)
}
Ma davvero usalo con attenzione.Se Apple cambiamento implementazioni nei futuri rilasci iOS, non sarebbe il lavoro
utilizzando l'API privata è un no go! – leviathan
Swift 3
let customClearButton = UIButton.appearance(whenContainedInInstancesOf: [UITextField.self])
customClearButton.setBackgroundImage(UIImage(named: "custom_cb"), for: .normal)
- 1. Come posso spostare il pulsante di cancellazione in un UITextField?
- 2. Quando si fa clic sulla tastiera del tasto chiaro di uitextfield non scompare il testo
- 3. personalizzato Middleware AspCore con cancellazione provvisoria
- 4. Capitalizzazione di UITextField
- 5. Il pulsante di cancellazione di UITextfield nasconde la tastiera quando è all'interno di UIScrollView
- 6. Android - tasto della tastiera personalizzato e azione
- 7. IPhone UITextField non mostra il testo di modifica del segnaposto o di cancellazione quando viene toccato
- 8. Nascondere la tastiera quando si preme il pulsante di cancellazione in UITextField
- 9. problema Larghezza in un UITextField con rightView personalizzato
- 10. Errori con rendering sottoclasse UITextField personalizzato in Interface Builder
- 11. Pulsante di cancellazione condizionale CGridview
- 12. UITextField clearButtonMode color
- 13. Come modificare l'immagine del pulsante di cancellazione (pulsante x) o almeno il colore dell'immagine del pulsante di cancellazione in UISearchbar?
- 14. resignFirstResponder intesa con UITextField
- 15. Perché la chiave non gestisce la chiave di cancellazione e il tasto backspace
- 16. non può attivare l'evento keypress quando si preme il tasto di cancellazione
- 17. UITextField in UITableViewCell Help
- 18. Tasto di ritorno tasto AngularJS
- 19. UITextField rightView "WhileEditing" problema
- 20. Posizione di rightView UITextField
- 21. Cancellazione di un ByteBuffer
- 22. Token di cancellazione semaforo
- 23. Come cercare con tasto invio su Android personalizzato InputMethodService?
- 24. Come nascondere personalizzato tasto tab bar quando hidesBottomBarWhenPushed è "TRUE"
- 25. UITextField tastiera non appare
- 26. fare UITextField di funzionare come UISearchBar
- 27. Strano comportamento durante l'animazione di UITextField
- 28. Testo segnaposto disallineato in UITextField di UISearchBar
- 29. UiTextField eventi
- 30. UITextField setVisible?
di poter postare un esempio di come si fosse fatto questo? – Gargo
Ecco il [collegamento alla mia soluzione] (http://stackoverflow.com/a/39905621/3385411) in Swift 3. Dovrebbe funzionare per il tuo scopo. – AndreasLukas