更改 UISearchBar 的键盘颜色

5

我希望能够更改键盘上“搜索”按钮的颜色,以使其与我的应用程序主题相匹配。但如果不可能的话,至少我想做到

self.searchBar.keyboardAppearance = UIKeyboardAppearanceDark;

但这并不起作用,因为我猜测searchBar不是一个UITextField。那么我该如何成功地做到这一点呢?我的意思是,如何更改键盘上的“搜索”颜色:无论是完全还是只有深色主题。

5个回答

15

iOS 8使用方法:

self.searchBar.keyboardAppearance = UIKeyboardAppearance.Dark

(用于)

5

试试这个,它适用于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];
        }
    }

1

Swift 4 更新,iOS 11+ :

    searchBar.keyboardAppearance = .dark
    searchBar.keyboardAppearance = .light
    searchBar.keyboardAppearance = .default

现在(Swift 4).alert已被弃用,等同于.dark - Maxime

0

Swift 5,iOS 14:

如果搜索栏出现在特定视图中(例如SearchBarView),

UITextField.appearance(whenContainedInInstancesOf: [SearchBarView.self]).keyboardAppearance = .dark

这将仅对SearchBarView内特定的搜索栏引起更改。

否则,如果您想对所有搜索栏进行更改,则使用以下方法:

UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).keyboardAppearance = .dark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接