UISearchBar 的自定义 InputView 在 iOS7 中不起作用
Posted
技术标签:
【中文标题】UISearchBar 的自定义 InputView 在 iOS7 中不起作用【英文标题】:Custom InputView for UISearchBar doesn't work in iOS7 【发布时间】:2013-09-24 04:24:39 【问题描述】:我需要在 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];
我该怎么做?
【问题讨论】:
【参考方案1】:iOS7 中的 searchBar 子视图层次结构已更改,请尝试以下操作:
iOS7:
NSArray *searchBarSubViews = [[self.searchBar.subviews objectAtIndex:0] subviews];
iOS6 及之前:
NSArray *searchBarSubViews = self.searchBar.subviews;
试试下面的更新功能:
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];
【讨论】:
那么如何使用 NSArray 设置 InputView? 通过在第二行改变你 if([[ [[self.searchBar.subviews objectAtIndex:0] subviews] objectAtIndex:i] isKindOfClass:[UITextField class]]) 等等休息。 整个函数的searchBar.subviews改了吗? 兄弟。现在我明白了。欢呼!。 :D以上是关于UISearchBar 的自定义 InputView 在 iOS7 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
自定义 NavigationBar 中的 UISearchBar
UISearchController 在关闭时清除 UISearchBar 文本