UISearch栏没有调用searchBarTextDidBeginEditing

时间:2011-11-04 09:55:48

标签: ios uisearchbar uisearchbardelegate

我有一个简单的视图控制器,其中包含 uisearchbar uitable 。 我的问题是,当点击搜索栏时,我看到被调用的委托函数 searchBarShouldBeginEditing 但不是 searchBarTextDidBeginEditing (并且由于该键盘未打开且搜索不可编辑)

我尝试实现委托功能 searchBarShouldBeginEditing 返回YES,将搜索栏设置为第一响应者,但我无法通过 searchBarTextDidBeginEditing 调用...

知道会发生什么事吗?

一些代码:

或者Controller.h

@interface ViewController : UIViewController <UISearchBarDelegate>
{
   UISearchBar * searchbar;
}

@property (nonatomic, retain) IBOutlet UISearchBar* searchbar;

@end

Controller.m或者

@synthesize searchbar;

- (BOOL)respondsToSelector:(SEL)sel {
    NSLog(@"Queried about %@", NSStringFromSelector(sel));
    return [super respondsToSelector:sel];
}

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
    NSLog(@"searchBarShouldBeginEditing -Are we getting here??"); 
    return YES;  
}  
-(void) searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
    NSLog(@"searchBarTextDidBeginEditing -Are we getting here??");  
}

在我的班级中,我的班级有更多的代码(肯定会以某种方式影响搜索栏)但如果有人在搜索栏中遇到类似的问题,那么它的反应就会非常准确;)

我尝试只使用搜索栏进行简单的应用程序,显然它有效......

编辑:

稍微测试我发现它与uisearchbar没有关系,因为我添加了一个TextField获得相同的结果(只是调用了textFieldShouldStartEditing委托函数)

应用程序在UITabBar cotroller中有所有视图控制器,但我认为这不会导致所有这些混乱......

EDITING2:

非常奇怪的行为:将IBAction函数设置为UITextfield的TouchDown事件可以正常工作,但将IBAction函数设置为EditingDidBegin永远不会被触发...

为什么无法调用此事件?

3 个答案:

答案 0 :(得分:13)

你设置了委托属性吗?

searchbar.delegate = self;

答案 1 :(得分:0)

也许你在某处打电话[searchbar resignFirstResponder]。我的类似问题就是这种情况。

答案 2 :(得分:0)

当我从独立的UISearchBar转换为集成到UINavigationBar的searchBar时遇到了这个问题。

在转换代码时,我仍在分配UISearchBar并为此设置委托。我应该做的是配置UISearchController附带的searchBar,并设置其委托,

self.searchController.searchBar.delegate = self;

一旦这样做,我的委托方法就开始触发!