我希望能够更改键盘上“搜索”按钮的颜色,以使其与我的应用程序主题相匹配。但如果不可能的话,至少我想做到
self.searchBar.keyboardAppearance = UIKeyboardAppearanceDark;
但这并不起作用,因为我猜测searchBar不是一个UITextField。那么我该如何成功地做到这一点呢?我的意思是,如何更改键盘上的“搜索”颜色:无论是完全还是只有深色主题。
iOS 8使用方法:
self.searchBar.keyboardAppearance = UIKeyboardAppearance.Dark
试试这个,它适用于IOS 6、IOS 7和IOS 8:
[self setKeyboardOnSearchBar:self.searchBar];
还有这个函数:
-(void)setKeyboardOnSearchBar:(UISearchBar *)searchBar
{
for(UIView *subView in searchBar.subviews) {
if([subView conformsToProtocol:@protocol(UITextInputTraits)]) {
[(UITextField *)subView setKeyboardAppearance:UIKeyboardAppearanceAlert];
[(UITextField *)subView setReturnKeyType:UIReturnKeySearch];
} else {
for(UIView *subSubView in [subView subviews]) {
if([subSubView conformsToProtocol:@protocol(UITextInputTraits)]) {
[(UITextField *)subSubView setReturnKeyType:UIReturnKeySearch];
[(UITextField *)subSubView setKeyboardAppearance:UIKeyboardAppearanceAlert];
}
}
}
}
}
for(UIView *subView in self.searchBar.subviews) {
if([subView conformsToProtocol:@protocol(UITextInputTraits)]) {
[(UITextField *)subView setKeyboardAppearance: UIKeyboardAppearanceDark];
}
}
Swift 4 更新,iOS 11+ :
searchBar.keyboardAppearance = .dark
searchBar.keyboardAppearance = .light
searchBar.keyboardAppearance = .default
Swift 5,iOS 14:
如果搜索栏出现在特定视图中(例如SearchBarView),
UITextField.appearance(whenContainedInInstancesOf: [SearchBarView.self]).keyboardAppearance = .dark
这将仅对SearchBarView内特定的搜索栏引起更改。
否则,如果您想对所有搜索栏进行更改,则使用以下方法:
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).keyboardAppearance = .dark
.alert
已被弃用,等同于.dark
。 - Maxime