更改 UISearchBar 的键盘颜色
Posted
技术标签:
【中文标题】更改 UISearchBar 的键盘颜色【英文标题】:Change keyboard color for UISearchBar 【发布时间】:2014-08-21 19:36:56 【问题描述】:我真的很想更改键盘上“搜索”按钮的颜色以匹配我的应用程序的主题。但如果那是不可能的,至少我愿意这样做
self.searchBar.keyboardAppearance = UIKeyboardAppearanceDark;
但这不起作用,因为我猜,searchBar 不是 UITextField。那么我怎样才能做到这一点成功呢?我的意思是,更改键盘上“搜索”的颜色:无论是完全主题还是只是深色主题。
【问题讨论】:
【参考方案1】:对于 ios 8 使用
self.searchBar.keyboardAppearance = UIKeyboardAppearance.Dark
【讨论】:
【参考方案2】:试试这个,它适用于 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];
【讨论】:
【参考方案3】:试试下面的
for(UIView *subView in self.searchBar.subviews)
if([subView conformsToProtocol:@protocol(UITextInputTraits)])
[(UITextField *)subView setKeyboardAppearance: UIKeyboardAppearanceDark];
【讨论】:
【参考方案4】:Swift 4 更新,iOS 11+:
searchBar.keyboardAppearance = .dark
searchBar.keyboardAppearance = .light
searchBar.keyboardAppearance = .default
【讨论】:
现在 (swift 4).alert
已弃用,等于 .dark
【参考方案5】:
Swift 5、iOS 14:
如果搜索栏出现在特定视图(例如 SearchBarView)中,
UITextField.appearance(whenContainedInInstancesOf: [SearchBarView.self]).keyboardAppearance = .dark
只会对 SearchBarView 内的特定搜索栏造成更改。
否则,如果您想对所有搜索栏都这样做,
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).keyboardAppearance = .dark
【讨论】:
以上是关于更改 UISearchBar 的键盘颜色的主要内容,如果未能解决你的问题,请参考以下文章