如何在 iOS7 中更改 UISearchBar 的 inputView?
Posted
技术标签:
【中文标题】如何在 iOS7 中更改 UISearchBar 的 inputView?【英文标题】:How to change inputView of UISearchBar in iOS7? 【发布时间】:2013-11-29 05:02:08 【问题描述】:在 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。 请帮忙!谢谢!
【问题讨论】:
【参考方案1】: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];
【讨论】:
您也可以使用以下命令从 UISearchBar 获取 UITextField:[self.searchBar valueForKey:@"_searchField"]【参考方案2】:使用以下代码:
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];
【讨论】:
【参考方案3】:试试这个代码:
for (UIView *view in _searchBar.inputView.subviews)
if ([view isKindOfClass: [UITextField class]])
UITextField* textField = (UITextField*)view;
[textField setInputView:_myKeyboard];
break;
在 iOS 7 子视图中不起作用。从 iOS7 UI 对象有一个额外的包装器/容器。可能这段代码会对你有所帮助。
【讨论】:
以上是关于如何在 iOS7 中更改 UISearchBar 的 inputView?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS7 中更改 UISearchBar 的 inputView?
如何在 iOS 7 的 UISearchBar 中更改位置或隐藏放大镜图标?