2012-06-08 51 views
3

我一直在试图找到解决方案几个小时,但唉,没有骰子...我一直试图实现一个UISearchBar纯编程(没有xib,没有接口生成器)。UISearchBar没有响应点击时

这里是我的.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]; 

键盘做演出,所以它可能不是代表团,但实际检测是否已被点击......我不希望它虽然对负载进行编辑,并且只能由请求...

请帮忙。谢谢! :)

此致, Piotr。

+1

是它下面的任何其他意见?他们可能会阻止它的触动。 – borrrden

+0

我不认为这是在任何的意见 - 我删除了所有的[的UIColor clearColor]背景从所有检查的意见,似乎没有任何要覆盖它... – Piotr

回答

0

尝试定义它的委托方法,并将其设置为searchBarShouldBeginEditing方法中的第一个响应方法。如果它仍然无法工作,请确保在此视图上没有任何其他视图。这样,它将覆盖触摸。

+0

嘿,我试过了,但它没”吨工作......无论如何感谢! :) – Piotr

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,中提琴! ;)虽然

感谢所有的答案,如前所述,希望得到一个解释,为什么这个工作,它的所作所为。

一切顺利, Piotr。

+0

......Viola :) – Mario

+1

我刚碰到这个问题,我相信我知道发生了什么事情。这个问题必须由UISearchBar不可选择。这可能会发生,因为它被另一个视图覆盖,或者父视图控制器不够大。 我的情况碰巧是后者。我的父视图只有100px大,即使我能看到UISearchBar,它也不会与任何类型的触摸交互。将父视图控制器更改为更大的尺寸解决了这个问题。 –

+0

完美无瑕,非常感谢。 –

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

你不应该在自己的init方法使用访问searchBars框架。我会想,因为那时它还没有被引用,所以它会是0,因此给你没有高度的矩形,或者可能是NSZeroRect,因为makeRect完全失败了。

+0

+1您的评论。尺寸确实还没有设置,所以使用searchBar.frame会让你没有任何结果。 – Craimasjien