我想将 iOS 8 中 UISearchBar
内的取消按钮文本从“Cancel”更改为“Done”。我正在使用UISearchController
。我尝试了不同的方法用于 iOS 6 和 iOS 7,但它们都不起作用。有人做过这个吗?
我想将 iOS 8 中 UISearchBar
内的取消按钮文本从“Cancel”更改为“Done”。我正在使用UISearchController
。我尝试了不同的方法用于 iOS 6 和 iOS 7,但它们都不起作用。有人做过这个吗?
Objective-C:
[searchBar setValue:@"customString" forKey:@"_cancelButtonText"];
Swift:
searchBar.setValue("customString", forKey:"_cancelButtonText")
这在iOS8到iOS13上对我有效,没有尝试过iOS7,但应该可以解决问题,在应用程序周期的早期阶段(例如:appDelegate)放置此行时要小心。
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitle:@"Annuler"];
从iOS9开始,您还可以使用
[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTitle:@"Annuler"];
Swift版本:
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title = "Annuler"
希望这能帮到你 ;)
找到了!在 iOS 8 中,取消按钮位于“cancelButton”键下。我使用 UISearchBar 委托 searchBarTextDidBeginEditing 来进行更改。
func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
let uiButton = searchBar.valueForKey("cancelButton") as UIButton
uiButton.setTitle("Done", forState: UIControlState.Normal)
}
_cancelButtonText
好100倍 - LeoSwift 3.0:
在你的AppDelegate中添加以下内容:
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title = "my text"
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和UINavigationButton,其中UINavigationButton是UIButton的子类。检查视图是否为UIButton,如果是,则更改UIButton的属性。
searchBarTextDidBeginEditing
中,并且它正确地更改了按钮的标题。但是,当“取消”按钮首次显示时,它没有起作用 - 我怀疑它比调用 searchBarTextDidBeginEditing
的时间晚了几秒钟。最终我在我的 viewDidLoad
方法中使用了 这个解决方案 - 完美解决! - MayaLekova我在使用UISearchController中的UISearchBar时遇到了问题。第一次显示取消按钮时,文本没有改变,但第二次显示时却改变了。
直到我看到了@polo987的答案。这是我成功做到的:
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title = "Done"
针对iOS 13的支持:
Swift:
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title = "Whatever"
Objective-C:
[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:[NSArray arrayWithObject:[UISearchBar class]]] setTitle:@"Whatever"]
在Swift中:
searchBar.setValue("customString", forKey: "_cancelButtonText")
基于Burhanuddin Sunelwala的回答。
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