单击时UISearchBar没有响应

时间:2012-06-08 07:43:56

标签: iphone objective-c uisearchbar uisearchbardelegate

我一直试图找到解决方案几个小时,但唉没有骰子...... 我一直在尝试纯粹以编程方式实现UISearchBar(没有xib,没有接口构建器)。

这是我的.h标题:

@interface RLCASearchMasterViewController : UIViewController<UISearchBarDelegate>

@property (strong, nonatomic) RLCAGUIElements *gui;
@property (strong, nonatomic) RLCAUITableView *table;
@property (strong, nonatomic) UISearchBar *searchBar;

@end

和我的.m实施:

@synthesize searchBar;

- (void)loadView
{

[super loadView];

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, searchBar.frame.size.height)];
searchBar.delegate = self;
[self.view addSubview:searchBar];  

}

我已经过去了,我不知道多少次,也不知道我做错了什么...... UISearchBar被添加到视图中,具有正确的大小和所有,但是当点击/点击时,键盘不会出现。 如果我引起以下情况:

[searchBar becomeFirstResponder];

键盘确实显示,所以它可能不是委托,但实际上是检测它是否被点击了......我不希望它在加载时编辑,只能通过请求...

请帮忙。谢谢! :)

此致 彼得。

3 个答案:

答案 0 :(得分:8)

好的,我开始工作了。

它有效,但我不知道为什么。如果有人有任何见解,我将非常感激......

所以:

我换了:

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x,         self.view.frame.origin.y, self.view.frame.size.width, searchBar.frame.size.height)];
searchBar.delegate = self;
[self.view addSubview:searchBar]; 

使用:

searchBar = [[UISearchBar alloc] init];
searchBar.delegate = self;
[searchBar sizeToFit];
[self.view addSubview:searchBar];

...... aaand,VIOLA! ;)

感谢所有的答案,如上所述,我们会理解为什么这样做以及它做了什么。

一切顺利, 彼得。

答案 1 :(得分:2)

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x,         self.view.frame.origin.y, self.view.frame.size.width, searchBar.frame.size.

您不应该访问searchBars框架以在其自己的init方法中使用。我想,因为在那一刻它尚未被引入,它将为0因此给你一个没有高度的矩形,或者可能是NSZeroRect因为makeRect完全失败

我认为这就是问题所在。

答案 2 :(得分:0)

尝试定义其委托方法,并将第一个响应方法放在searchBarShouldBeginEditing方法中。如果仍然无法正常工作,请确保此视图顶部没有任何其他视图。通过这种方式,它将超越触摸。