【发布时间】:2011-12-21 21:20:23
【问题描述】:
我有一个带有 uisearchbar 和 uitable 的简单视图控制器。 我的问题是,当点击搜索栏时,我看到委托函数 searchBarShouldBeginEditing 被调用但不是 searchBarTextDidBeginEditing (并且因为没有打开键盘并且搜索不可编辑) p>
我尝试实现委托函数 searchBarShouldBeginEditing 返回 YES,将搜索栏设置为第一响应者,但我无法调用 searchBarTextDidBeginEditing...
知道会发生什么吗?
一些代码:
控制器.h
@interface ViewController : UIViewController <UISearchBarDelegate>
{
UISearchBar * searchbar;
}
@property (nonatomic, retain) IBOutlet UISearchBar* searchbar;
@end
控制器.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 控制器中包含所有视图控制器,但我认为这不会导致所有这些混乱......
编辑2:
非常奇怪的行为:将 IBAction 函数设置为 UITextfield 的 TouchDown 事件效果很好,但将 IBAction 函数设置为 EditingDidBegin 永远不会被触发...
为什么不能调用这个事件??
【问题讨论】:
-
你能发布你的代码吗?
-
我的 searchBar 有相反的行为。我得到了 searchBarTextDidBeginEditing 但没有得到 searchBarShouldBeginEditing... 也许 Apple 在最新的 SDK 中搞砸了一些东西?你用的是什么 SDK?
-
对不起,我没有代码了......我认为我解决了它重新创建了整个项目(但仍然不知道第一个项目失败的原因。)
标签: ios uisearchbar uisearchbardelegate