Я хотел бы изменить текст из ¨Советы ¨Отмена кнопки «Отмена» внутри UISearchBar в iOS 8. Я использую UISearchController. Я пробовал разные подходы для iOS 6 и iOS 7, и они не работают. Кто-нибудь это сделал?Изменить текст кнопки отмены UISearchBar в iOS 8
ответ
Найденный !. в iOS 8 кнопка отмены находится под клавишей «cancelButton». Я использовал делегат UISearchBar searchBarTextDidBeginEditing, чтобы внести изменения.
func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
let uiButton = searchBar.valueForKey("cancelButton") as UIButton
uiButton.setTitle("Done", forState: UIControlState.Normal)
}
Я бы предпочел не устанавливать заголовок кнопки внутри этого обратного вызова. Кажется немного странным и ненужным. Подумайте о настройке этого значения при настройке вашего представления. –
В 100 раз лучше, чем использовать private '_cancelButtonText' – Leo
@ SteffenD.Sommer Мне было удобно установить его внутри обратного вызова, потому что я не показываю кнопку «Отмена», пока UISearchBar не будет в фокусе. – toddg
Это будет работать
[searchBar setValue:@"customString" forKey:@"_cancelButtonText"];
Swift Версия:
searchBar.setValue("customString", forKey:"_cancelButtonText")
У вас есть версия Swift? –
@It_Does_Not_Matter Обновлено! –
Должен быть принят андерсером. – Allen
В Swift:
searchBar.setValue("customString", forKey: "_cancelButtonText")
на основе Бархануддин Sunelwala ответа.
Лучшее решение, спасибо – Jack
Вот Свифт решение:
for (view) in _searchController.searchBar.subviews {
for (subview) in view.subviews {
if (subview.isKindOfClass(UIButton.self)) {
let cancelButton = subview as! UIButton
cancelButton.setTitle("BlaBla", forState: .Normal)
break
}
}
}
Это работает для меня в ios8, не пробовал в ios7, но должны сделать трюк, остерегайтесь размещения этой линии в ранние времена цикла приложений (например: AppDelegate)
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitle:@"Annuler"];
и от ios9 вы можете также использовать
[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTitle:@"Annuler"];
Надежда, что помогает;)
Подтверждено, что работает iOS 11. – mxcl
Я добавил titleLabel.font в смесь ...
Это идет прямо в мой ViewDidLoad() {
let searchFont = UIFont(name: "BrandonGrotesque-Medium", size: 12)
let textFieldSearchBar = self.searchBar.valueForKey("searchField") as! UITextField
textFieldSearchBar.font = searchFont
let cancelButton = searchBar.valueForKey("cancelButton") as! UIButton
cancelButton.setTitle("Done", forState: .Normal)
cancelButton.titleLabel!.font = searchFont
Восток или Запад ... David BEST:) .... спасибо Buddy –
У меня были проблемы с получением этого к работе для UISearchBar в UISearchController. Текст не менялся при первом нажатии кнопки отмены, но это произошло во второй раз.
Это до тех пор, пока я не увидел ответ @ polo987. Вот что я сделал, что работал:
UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).title = "Done"
Я знаю, это может показаться немного неуместным, но на мой взгляд, это безопаснее, чем использование частных APIs и более эффективным, чем принимать погружение в неизвестность видом. Это решение имеет смысл только в том случае, если у вас есть собственный механизм локализации, и вы хотите, чтобы Apple следила за вашим механизмом по всему приложению. В принципе, моя идея - переключить язык, используемый IOS SDK, чтобы локализовать кнопку, изменив ключ «AppleLanguages» в NSUserDefaults. Вы можете пойти here для получения дополнительной информации о том, как это работает.
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", @"fr", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
Поместите этот код, чтобы использовать английскую локализацию и французский запасной вариант, независимо от того, какой язык установлен на телефоне. Это действует только в приложении.
for view in (UISearchBar.subviews[0]).subviews{
if let button = view as? UIButton{
button.setTitleColor(UIColor.whiteColor(), forState: .Normal)
button.setTitle("Cancel", forState:.Normal)
}
}
self.subviews [0]).subviews содержат UISearchBarBackground, UISearchBarTextField, UINavigationButto n, в котором UINavigationButton является подклассом UIButton.Check для View как UIButton, и если да, то измените свойство UIButton.
Пожалуйста, объясните, как работает этот код. –
Пожалуйста, используйте ссылку [edit], чтобы добавить эту информацию в свой пост. Комментарии являются «гражданами второго сорта» и могут быть удалены в любое время. –
Этот ответ почти сработал для меня - я поместил код в 'searchBarTextDidBeginEditing', и он правильно изменил заголовок кнопки. Это не сработало в первый раз, когда отображается кнопка «Отмена» - я подозреваю, что она создается через несколько минут, чем вызов для 'searchBarTextDidBeginEditing'. Я закончил использовать [это решение] (http://stackoverflow.com/a/40257292/1540248) в моем методе 'viewDidLoad' - работает как шарм! – MayaLekova
Swift 3,0:
В вашем AppDelegate добавить следующее:
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title = "my text"
В Swift4
Изменить название:
(searchBar.value(forKey: "cancelButton") as! UIButton).setTitle("Done", for: .normal)
Изменение цвета:
(searchBar.value(forKey: "cancelButton") as! UIButton).setTitleColor(UIColor.blue, for: .normal)
- 1. Как изменить цвет текста кнопки отмены UISearchBar?
- 2. Невозможно изменить название кнопки отмены в UISearchBar
- 3. Хочет изменить положение кнопки отмены в UISearchBar
- 4. UISearchBar внутри кнопки отмены
- 5. IOS - Настройка кнопки UISearchBar
- 6. UISearchBar iOS 8 уточнение
- 7. Укладка кнопки отмены в UISearchBar
- 8. iOS4 UISearchBar локализация кнопки отмены
- 9. UISearchBar отключить автоматическое отключение кнопки отмены
- 10. Как установить цвет выделения кнопки отмены UISearchBar
- 11. Изменить текст кнопки отмены на Android?
- 12. UIActivityViewController - как изменить текст кнопки отмены
- 13. Как изменить текст кнопки отмены UIAlertView
- 14. Отключить клавиатуру UISearchBar без нажатия кнопки отмены
- 15. UISearchBar Отмена кнопки Язык
- 16. Кнопка отмены UISearchBar
- 17. UISearchBar скрывается в iOS 8
- 18. Изменение кадра кнопка отмены в UISearchBar
- 19. Swift: UISearchBar кнопка отмены анимации
- 20. Скрыть кнопку отмены UISearchBar
- 21. UISearchBar кнопка отмены аварии
- 22. Изменить UIBarButtonItem из UISearchBar
- 23. IOS визуализации кнопок области видимости UISearchBar изменить
- 24. Кнопка отмены UISearchBar Xcode 4.3?
- 25. Проблемы с компоновкой UISearchBar (iOS 8)
- 26. UISearchBar кнопка отмены не отвечает
- 27. Нажатие кнопки отмены в UISearchBar не вызывает выбор в tableView?
- 28. Добавление UISearchBar в UINavigationController в iOS 8
- 29. Создать UIButton в том же стиле кнопки отмены UISearchBar
- 30. Изменить текст кнопки «Отмена» на UISearchBar с помощью Monotouch?
возможно дубликат [UISearchController изменения 'Отмена' Название кнопки] (http://stackoverflow.com/questions/28642807/uisearchcontroller-change-cancel-button -title) –
Я написал ответ на эту тему здесь: http://stackoverflow.com/questions/19206757/how-to-change-textcolor-of-cancel-button-of-uisearchbar-in-ios7. Просто используйте SHSearchBar Cocoapod, который не является такой болью в заднице, как UISearchBar. – blackjacx