我一直试图找到解决方案几个小时,但唉没有骰子...... 我一直在尝试纯粹以编程方式实现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];
键盘确实显示,所以它可能不是委托,但实际上是检测它是否被点击了......我不希望它在加载时编辑,只能通过请求...
请帮忙。谢谢! :)
此致 彼得。
答案 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方法中。如果仍然无法正常工作,请确保此视图顶部没有任何其他视图。通过这种方式,它将超越触摸。