作者:孤狼舔血_347 | 来源:互联网 | 2023-05-18 14:30
我想在iOS 8中的UISearchBar中的"取消"按钮的"取消"中更改文本.我正在使用UISearchController.我尝试过iOS 6和iOS 7的不同方法,但它们不起作用.有人这样做过吗?
1> Burhanuddin ..:
Objective-C的:
[searchBar setValue:@"customString" forKey:@"_cancelButtonText"];
迅速:
searchBar.setValue("customString", forKey:"_cancelButtonText")
这在iOS 13中崩溃。`禁止访问UISearchBar的set_cancelButtonText:ivar。
我认为这不是证据安全.如果Apple决定使用iOS更新更改按钮的`_cancelButtonText`键,则会导致运行时崩溃.
2> polo987..:
这在ios8中对我有用,没有在ios7中尝试,但是应该这样做,小心在应用周期的早期放置这一行(例如:appDelegate)
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitle:@"Annuler"];
从ios9开始,你也可以使用
[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTitle:@"Annuler"];
Swift版本:
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title = "Annuler"
希望有所帮助;)
3> Wilmer..:
找到了!.在iOS 8中,取消按钮位于"cancelButton"键下.我使用UISearchBar委托searchBarTextDidBeginEditing进行更改.
func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
let uiButton = searchBar.valueForKey("cancelButton") as UIButton
uiButton.setTitle("Done", forState: UIControlState.Normal)
}
我会考虑不在此回调中设置按钮标题.这似乎有点奇怪和不必要.设置视图时,请考虑设置此值.
@Leo:`cancelButton`也是一个无证件的私人财产.没有下划线不会改变这一点.
4> Maysam..:
Swift 3.0:
在你的AppDelegate中添加:
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title = "my text"
5> Donal..:
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]).子视图包含UISearchBarBackground,UISearchBarTextField,UINavigationButto n,其中UINavigationButton是UIButton.Check的子类,用于View作为UIButton,如果是,则更改UIButton的属性.
6> Aleksejs Mja..:
在Swift中:
searchBar.setValue("customString", forKey: "_cancelButtonText")
基于Burhanuddin Sunelwala的回答.
这是一个危险的解决方案。如果苹果更改了键名“ _cancelButtonText”,这将导致您的应用程序崩溃。
7> toddg..:
我无法在UISearchController中为UISearchBar工作.第一次显示取消按钮时,文本没有改变,但第二次显示.
直到我看到@ polo987的答案.这就是我所做的工作:
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title = "Done"
8> Akhil Clemen..:
在Swift4中
更改标题:
(searchBar.value(forKey: "cancelButton") as! UIButton).setTitle("Done", for: .normal)
换颜色:
(searchBar.value(forKey: "cancelButton") as! UIButton).setTitleColor(UIColor.blue, for: .normal)