我有一个简单的视图控制器,其中包含 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永远不会被触发...
为什么无法调用此事件?
答案 0 :(得分:13)
你设置了委托属性吗?
searchbar.delegate = self;
答案 1 :(得分:0)
也许你在某处打电话[searchbar resignFirstResponder]
。我的类似问题就是这种情况。
答案 2 :(得分:0)
当我从独立的UISearchBar转换为集成到UINavigationBar的searchBar时遇到了这个问题。
在转换代码时,我仍在分配UISearchBar并为此设置委托。我应该做的是配置UISearchController附带的searchBar,并设置其委托,
self.searchController.searchBar.delegate = self;
一旦这样做,我的委托方法就开始触发!