iPhone UISearchBar完成按钮始终启用
我有一个UISearchBar的UIViewController。 我已经通过完成按钮替换了搜索按钮。
但是,当在搜索栏上点击时,“完成”按钮最初将被禁用。 直到有人进入任何角色。
我想要做的是始终启用此“完成”按钮,这样如果我点击它,我可以立即关闭键盘。
任何帮助? 它将不胜感激。
我有我的UIViewController
-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
return YES;
}
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
[searchBar resignFirstResponder];
}
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if (searchBar.text.length == 0)
{
//[self fixOrientation];
[searchBar resignFirstResponder];
}
else
{
NSLog(@"typed");
}
}
-(void)searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar
{
NSLog(@"began"); // this executes as soon as i tap on the searchbar, so I'm guessing this is the place to put whatever solution is available
}
如今UISearchBar
符合UITextInputTraits
。 你可以简单地设置:
searchBar.enablesReturnKeyAutomatically = NO;
警告:虽然这为iOS 7.0编译,它将在运行时崩溃 。 它只适用于> = 7.1。
这个文档并不清楚,因为从7.1开始, UISearchBar
实现了UITextInputTraits
协议,但是由于哪个iOS版本采用了UITextInputTraits
协议,所以没有注明。
您可以绕过UISearchBar中的子视图,直到找到文本字段。 然后只需将“enabledReturnKeyAutomatically”设置为NO即可。 顺便提一句,以下代码对设置键盘类型也很有用。
// loop around subviews of UISearchBar
for (UIView *searchBarSubview in [searchBar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
@try {
// set style of keyboard
[(UITextField *)searchBarSubview setKeyboardAppearance:UIKeyboardAppearanceAlert];
// always force return key to be enabled
[(UITextField *)searchBarSubview setEnablesReturnKeyAutomatically:NO];
}
@catch (NSException * e) {
// ignore exception
}
}
}
接受的答案似乎不再适用,所以我做了我自己的类似的工作:
@implementation UISearchBar (enabler)
- (void) alwaysEnableSearch {
// loop around subviews of UISearchBar
NSMutableSet *viewsToCheck = [NSMutableSet setWithArray:[self subviews]];
while ([viewsToCheck count] > 0) {
UIView *searchBarSubview = [viewsToCheck anyObject];
[viewsToCheck addObjectsFromArray:searchBarSubview.subviews];
[viewsToCheck removeObject:searchBarSubview];
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
@try {
// always force return key to be enabled
[(UITextField *)searchBarSubview setEnablesReturnKeyAutomatically:NO];
}
@catch (NSException * e) {
// ignore exception
}
}
}
}
链接地址: http://www.djcxy.com/p/44281.html