更改iOS 8中的UISearchBar取消button文本
我想更改从iOS的UISearchBar中取消button的“取消”的“完成”的文本。我正在使用UISearchController。 我已经尝试了iOS 6和iOS 7的不同方法,他们不工作。 有没有人做到这一点?
这将工作
[searchBar setValue:@"customString" forKey:@"_cancelButtonText"];
Swift版本:
searchBar.setValue("customString", forKey:"_cancelButtonText")
find了!。 在iOS 8中,取消button在“cancelButton”键下。 我使用UISearchBar委托searchBarTextDidBeginEditing进行更改。
func searchBarTextDidBeginEditing(searchBar: UISearchBar) { let uiButton = searchBar.valueForKey("cancelButton") as UIButton uiButton.setTitle("Done", forState: UIControlState.Normal) }
这对我在ios8中工作,没有尝试在ios7中,但应该做的伎俩,谨防把这一行放在应用程序周期的早期(例如:appDelegate)
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitle:@"Annuler"];
和ios9一样,你也可以使用
[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTitle:@"Annuler"];
希望有所帮助;)
Swift 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,UINavigationButto n其中UINavigationButton是UIButton.Check的子类作为UIButton查看,如果是,则更改UIButton的属性。
在Swift中:
searchBar.setValue("customString", forKey: "_cancelButtonText")
基于Burhanuddin Sunelwala的答案。
我在使用UISearchController中的UISearchBar时遇到了麻烦。 第一次显示取消button时文字没有改变,但是第二次做了。
直到我看到@ polo987的答案。 以下是我所做的工作:
UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).title = "Done"
我已经添加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
我知道这似乎有点不相关,但在我看来,这是比使用私人API更安全,比潜入未知观点更有效。 只有拥有自己的本地化引擎时,这个解决scheme才有意义,而且您希望Apple能够在整个应用程序中遵循您的机制。 基本上我的想法是通过改变NSUserDefaults中的“AppleLanguages”键来切换iOS SDK使用的语言来本地化button。 你可以去这里了解更多关于这是如何工作的信息。
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", @"fr", nil] forKey:@"AppleLanguages"]; [[NSUserDefaults standardUserDefaults] synchronize];
无论手机上设置什么语言,都要使用英文本地化和法语后备代码。 这只在应用程序内生效。
在Swift4中
更改标题:
(searchBar.value(forKey: "cancelButton") as! UIButton).setTitle("Done", for: .normal)
换颜色:
(searchBar.value(forKey: "cancelButton") as! UIButton).setTitleColor(UIColor.blue, for: .normal)
这里是Swift解决scheme:
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 } } }
- iOS UIFont.ByName Exception(Value不能为null。参数名称:value)
- 对NSDictionary的SIGABRT objectAtIndex:无法识别的select器
- NSAppTransportSecurity UIWebView问题
- 将dynamic库注入企业应用程序(ipa)
- XCode:如何在横向和纵向模式之间更改视图布局
- 如何在透视图中围绕其中心旋转扁平物体?
- 使用AWSiOS SDK,您如何对S3对象执行HEAD请求?
- ? 在Xcode 6 Beta 6中没有名为'subscript'的成员
- 当尝试在iOS中编码URL时,NSURLConnection完成了错误 – 代码-1002