如何在iOS7中更改UISearchBar的inputView?
问题描述:
在iOS6的,我用下面的代码改变的UISearchBar如何在iOS7中更改UISearchBar的inputView?
的inputViewfor (UIView *view in _searchBar.subviews) {
if ([view isKindOfClass: [UITextField class]]) {
UITextField* textField = (UITextField*)view;
[textField setInputView:_myKeyboard];
break;
}
}
的UISearchBar在iOS7发生了变化,我不知道如何找到文本框来改变inputView。 请帮忙!谢谢!
答
子视图的层次结构已经改变iOS7,这样你就可以使用下面的代码:
// 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];
答
试试这个代码:
for (UIView *view in _searchBar.inputView.subviews) {
if ([view isKindOfClass: [UITextField class]]) {
UITextField* textField = (UITextField*)view;
[textField setInputView:_myKeyboard];
break;
}
}
在iOS的7子视图
不工作。从iOS7 UI对象有一个额外的包装器/容器。可能是这段代码会帮助你。
+0
_searchBar.inputView.subviews无法正常工作。不管怎么说,还是要谢谢你! –
答
使用下面的代码:
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];
您也可以使用以下命令从UISearchBar获取UITextField:[self.searchBar valueForKey:@“_ searchField”] – matzino