2013-07-02 119 views
7

我看了很多回復,仍然無法弄清楚。我知道,第一行是有點怪異,但它的,因爲它是從設置headerview搜索欄爲什麼UIButton不響應觸摸?

searchBar = (UISearchBar *)self.tableView.tableHeaderView; 
[[searchBar.subviews objectAtIndex:0] removeFromSuperview]; 

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, -100, self.view.frame.size.width, 100)]; 
label.text = @"AAAA"; 
[searchBar addSubview:label]; 

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget:self 
      action:@selector(aMethod) 
forControlEvents:UIControlEventTouchDown]; 
[button setTitle:@"Show View" forState:UIControlStateNormal]; 
button.frame = CGRectMake(80.0, -60, 160.0, 40.0); 

searchBar.exclusiveTouch = NO; 
searchBar.userInteractionEnabled = NO; 
label.userInteractionEnabled = NO; 
button.userInteractionEnabled = YES; 
[searchBar insertSubview:button atIndex:3]; 
+0

嘗試設置'searchBar.userInteractionEnabled = YES;'而不是 –

+0

我已經試過了,它不工作 – mergesort

+0

也試過和不工作 – mergesort

回答

5

以下是您的答案: searchBar.userInteractionEnabled = NO; 如果要將子視圖添加到禁用了userInteraction的視圖,則該子視圖將不會接收到觸摸。我沒有看過你的代碼,看看是否還有其他錯誤。

看在首位幀:

button.frame = CGRectMake(80.0,-60,160.0,40.0);

UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0,-100,self.view.frame.size.width,100);

該按鈕根本不可見,標籤相同,對象被放置在邊界以外,這就是爲什麼你不能觸摸它們。

+0

是的,他們被置於界限之外。可以觸及不會被髮送到出界的東西?它們仍然可見,因爲我在偏移量處顯示tableview。編輯:這個作品。 – mergesort

+0

不,那些觸動無法發送到那裏,就好像你會嘗試移動屏幕右側的圖像,只看到一個角落,你試圖看看外面是什麼。我在WWDC有一位iOS工程師問過這個問題。 – soryngod

+0

顯然這可以通過重寫一個方法來完成。不過在這種情況下不值得。謝謝 – mergesort

5

userInteractionEnabled設置爲NO在父視圖會向下級聯到所有子視圖一個超類繼承。因此,由於searchBar被禁用,您的UIButton實例將顯示無響應。

+0

它仍然如果我刪除searchbar.exclusive觸摸甚至不工作, searchbar.userinteractionenabled – mergesort