4

我一直在努力寻找解决方案几个小时,但可惜没有骰子......我一直在尝试纯粹以编程方式实现 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];

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

请帮忙。谢谢!:)

真诚的,彼得。

4

3 回答 3

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];

……啊,薇奥拉!;)

不过,感谢所有答案,并且如前所述,将不胜感激解释为什么这样做以及它做了什么。

一切顺利,彼得。

于 2012-06-08T09:18:35.937 回答
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 完全失败了

我认为这就是问题所在。

于 2012-06-08T09:59:59.477 回答
0

尝试定义它的委托方法并将成为第一响应者的方法放在 searchBarShouldBeginEditing 方法中。如果它仍然不起作用,请确保此视图之上是否没有任何其他视图。这样,它将覆盖触摸。

于 2012-06-08T07:56:47.193 回答