更改 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 的键盘颜色的主要内容,如果未能解决你的问题,请参考以下文章

动态更改 UISearchBar 的键盘类型

UISearchBar:更改输入字段的背景颜色

UISearchBar:更改输入字段的背景颜色

UISearchBar 更改占位符颜色

更改 UISearchBar 的条形颜色 - iOS

如何在iOS上更改UISearchBar组件的内部背景颜色