1

在 iOS6 中,我使用下面的代码来改变 UISearchbar 的 inputView

for (UIView *view in _searchBar.subviews) {
    if ([view isKindOfClass: [UITextField class]]) {
        UITextField* textField = (UITextField*)view;
        [textField setInputView:_myKeyboard];
        break;
    }
}

iOS7 中的 UISearchbar 发生了变化,不知道如何找到 textField 来更改 inputView。请帮忙!谢谢!

4

3 回答 3

2

iOS7 中 subview 的层次结构发生了变化,所以可以使用如下代码:

// subviews
NSArray *searchBarSubViews = [[self.searchBar.subviews objectAtIndex:0] subviews];
for (UIView *view in searchBarSubViews) {
    if([view isKindOfClass:[UITextField class]])
    {
        UITextField* search=(UITextField*)view;
        [search setFont:[UIFont fontWithName:@"MyCustomFont" size:15]];
        search.delegate = self;

        [search setInputView:self.customKeyboard];
        [self.customKeyboard setTextView:search];
    }
}
[self.searchBar reloadInputViews];
于 2013-11-29T05:16:36.730 回答
1

使用以下代码:

NSArray *subViewsOfSearchBar = [[self.YOurSearchBar.subviews objectAtIndex:0] subviews];
for(int i =0; i< subViewsOfSearchBar.count; i++) {
    if([[subViewsOfSearchBar objectAtIndex:i] isKindOfClass:[UITextField class]])
    {
        UITextField *searchTxtField=(UITextField*)[subViewsOfSearchBar objectAtIndex:i];
        [searchTxtField setInputView:self.customKeyboard];
    }
}
[self.searchBar reloadInputViews];
于 2013-11-29T05:13:43.913 回答
0

试试这个代码:

for (UIView *view in _searchBar.inputView.subviews) {
        if ([view isKindOfClass: [UITextField class]]) {
            UITextField* textField = (UITextField*)view;
            [textField setInputView:_myKeyboard];
            break;
        }
    }

在 iOS 7 子视图中不起作用。从 iOS7 UI 对象有一个额外的包装器/容器。可能这个代码会帮助你。

于 2013-11-29T05:07:31.603 回答