Niestandardowy przycisk Wyczyść UITextField
Czy można dostosować obraz przycisku Wyczyść w UITextField
? Mam ciemne tło textfield i " x " nie jest wystarczająco widoczny.
7 answers
Możesz ustawić własny przycisk Wyczyść do właściwości rightView
pola tekstowego. Upewnij się, że właściwość rightViewMode
jest ustawiona na UITextFieldViewModeWhileEditing
lub UITextFieldViewModeAlways
, niezależnie od tego, co ma sens w Twoim przypadku.
Jeśli pozycja przycisku nie jest odpowiednia dla Twoich potrzeb, możesz podklasować UITextField
i nadpisać metodę rightViewRectForBounds:
.
Dokumentacja mówi, że domyślną właściwością clearButtonMode
jest UITextFieldViewModeNever
, ale podejrzewam, że konstruktor interfejsu może ustawić ją na UITextFieldViewModeWhileEditing
- Upewnij się, że ustawiłeś ją na wartość "never", aby nie pojawiaj się.
Wszystkie te właściwości są udokumentowane w UITextField Class Reference.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-19 15:20:17
Możesz uzyskać dostęp do tej właściwości za pomocą KVO:
UIButton *clearButton = [myTextField valueForKey:@"_clearButton"];
[clearButton setImage:[UIImage new] forState:UIControlStateNormal];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-05 09:54:08
Testowany iOS7.0 - 8.4
Możliwe jest zaktualizowanie tła wszystkich przycisków clear przy użyciu następującej metody UIAppearance. Niestety nie można zaktualizować obrazu przycisku:
UIButton *defaultClearButton = [UIButton appearanceWhenContainedIn:[UITextField class], nil];
[defaultClearButton setBackgroundImage:[UIImage imageNamed:@"clearButtonBkg1.png"] forState:UIControlStateNormal];
Przy użyciu następujących obrazów, powoduje to następujący przycisk Wyczyść:
Białe tło obrazek @3x:
Uwaga: spowoduje to aktualizację obrazu tła wszystkich przycisków contained in textfields
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-01 13:42:43
Swift 2.2+ / iOS 9 + Wersja odpowiedzi @ Brody Robertson:
let defaultClearButton = UIButton.appearanceWhenContainedInInstancesOfClasses([UITextField.self])
defaultClearButton.setBackgroundImage(UIImage(named: "ClearIcon"), forState: UIControlState.Normal)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-02 12:57:53
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)
}
Ale naprawdę używaj go ostrożnie. Jeśli Apple zmieni implementacje w przyszłych wydaniach iOS, nie będzie działaćWarning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:27
Swift 3
let customClearButton = UIButton.appearance(whenContainedInInstancesOf: [UITextField.self])
customClearButton.setBackgroundImage(UIImage(named: "custom_cb"), for: .normal)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-07 16:57:36
Jednym z rozwiązań byłoby utworzenie niestandardowego UITextField
, który ma żądany obraz jako podgląd podrzędny i czyści Nadrzędne pole tekstowe po stuknięciu. Wyłącza się przycisk domyślny i dodaje własne zachowanie w tym niestandardowym polu tekstowym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-11 10:08:12