2012-06-08 98 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