UISearchBar的自定义InputView在iOS7中不起作用

我需要在UISearchBar中设置我的自定义inputView。

所以我写了下面的代码,这是在iOS5和iOS6完美工作。

但是,它不适用于iOS7。

for(int i =0; i<[self.searchBar.subviews count]; i++) { if([[self.searchBar.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { [(UITextField*)[searchBar.subviews objectAtIndex:i] setFont:[UIFont fontWithName:@"MyCustomFont" size:15]]; UITextField* search=(UITextField*)[searchBar.subviews objectAtIndex:i]; search.delegate = self; [(UITextField*)[self.searchBar.subviews objectAtIndex:i] setInputView:self.customKeyboard]; [self.customKeyboard setTextView:search]; } } [self.sBar reloadInputViews]; 

我怎样才能做到这一点?

在iOS7中,searchBar子视图层次结构已被更改,请尝试以下操作:

IOS 7:

 NSArray *searchBarSubViews = [[self.searchBar.subviews objectAtIndex:0] subviews]; 

iOS6之前:

 NSArray *searchBarSubViews = self.searchBar.subviews; 

尝试下面更新的function:

 NSArray *searchBarSubViews = [[self.searchBar.subviews objectAtIndex:0] subviews]; for(int i =0; i<[searchBarSubViews count]; i++) { if([[searchBarSubViews objectAtIndex:i] isKindOfClass:[UITextField class]]) { UITextField* search=(UITextField*)[searchBarSubViews objectAtIndex:i]; [search setFont:[UIFont fontWithName:@"MyCustomFont" size:15]]; search.delegate = self; [search setInputView:self.customKeyboard]; [self.customKeyboard setTextView:search]; } } [self.sBar reloadInputViews];