2

当用户点击搜索文本字段时,我想将键盘的颜色更改为黑色。

我试图用 UITextField *textField = [UITextField appearance]; [textField setKeyboardAppearance:UIKeyboardAppearanceAlert];

但是我的构建失败并显示此消息

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UISearchBarTextField _UIAppearance_setKeyboardAppearance:]:无法识别的选择器发送到实例 0x8485260”

请问你能帮我吗?非常感谢

4

2 回答 2

4

使用此代码...

    for(UIView *searchTextfield in yourSearchBar.subviews)
    {
        if([searchTextfield isKindOfClass: [UITextField class]]){
            [(UITextField *)searchTextfield setKeyboardAppearance: UIKeyboardAppearanceAlert];
        }
    }

就像我的另一个答案一样,我替换了按钮 Image see.. image-for-cancel-button-of-uisearchbar

于 2013-04-29T09:19:52.507 回答
1

赞成 Paras Joshi 的回答,以及 iOS7/8 的更新。UIView 现在被包裹在一层中,因此您需要再次迭代。

 for(UIView *searchTextfield in self.searchBar.subviews)
    {
        for(UIView *searchTextfield2 in searchTextfield.subviews) {
            if([searchTextfield2 isKindOfClass: [UITextField class]]){
                [(UITextField *)searchTextfield2 setKeyboardAppearance: UIKeyboardAppearanceDark];
            }
        }


    }

标准免责声明。这是苹果“官方”不赞成的,但因为您只是使用公共 api 迭代 UIViews,所以您“技术上”没问题。

于 2014-12-05T22:44:29.110 回答