2008-11-17 17 views
14

我有一個按鈕,我將添加爲表視圖的tableHeaderView的子視圖。按鈕顯示正常,點擊並保持不動 - 大多數情況下,它沒有反應。我試着將它作爲表本身的子視圖來添加;效果大致相同。我認爲這個問題可能與滾動視圖的觸摸攔截有關,但在表上禁用滾動也沒有效果。在UITableView標題中的UIButton忽略最觸動

我做錯了什麼?有人遇到過這種情況麼?

編輯 - 爲了澄清,我說的是主表標題,而不是段標題,在分組樣式表中;認爲基本上是在「聯繫人」屏幕後建模的。

+0

我遇到了這個確切的問題,但接受的答案不適用於我。 [這個問題的答案](http://stackoverflow.com/questions/19256996/uibutton-not-showing-highlight-on-tap-in-ios7/19299451#19299451)完美地解決了我的問題。 – 2014-01-16 03:46:18

回答

22

我有同樣的問題。在我的情況下,我有一個在IB中實例化的容器視圖(它被用作代碼中的表視圖標題),UIImageView佔用了該容器的整個框架。行爲不端按鈕駐留在圖像視圖中。

原來我需要在IB上漿支柱設置如下......

容器視圖:外部錨都在,內部大小調整 - 全部關閉

子圖像視圖:在(內部的所有支柱和外部)

我有幾個不同的表視圖,所有使用標題視圖。有些人會正確迴應觸摸事件,有些是片狀的。這解決了我的問題

+2

+1。這對我有效。我沒有使用IB,所以我不得不用`-setAutoresizingMask:`編程設置struts,並且我發現它只在容器上是必需的。內部圖像控件不需要任何東西。謝謝!永遠不會偶然偶然發現這一點。 – 2010-03-03 13:57:16

+0

經過幾個小時的抨擊我的頭,這爲我工作。謝謝。 – thedeveloper3124 2013-01-19 10:51:02

-7

您應該認爲這不是headerView的預期起訴,並且像這樣的實現可能會導致由於HIG違例而從AppStore中被拒絕。考慮到標題的尺寸很小,最好考慮對視圖進行重構。話雖如此,但沒有簡單的方法可以通過手工檢測觸摸事件並自己確定幾何體,然後根據幾何體執行選擇器 - 簡而言之,就是滾動您自己的按鈕類。

+0

我在HIG中找不到任何內容,禁止使用表格中的按鈕(而不是章節)頁眉/頁腳視圖;聯繫人應用程序將按鈕附加到表格頁腳沒有問題,蘋果公司的「HeaderFooter」樣本做了類似的事情(雖然它表現出同樣的問題)。雷達,也許? – 2008-11-18 00:03:41

+0

更可能的是,我會建議提交一個錯誤。 – wisequark 2008-11-18 17:29:52

7

我完全不同意Wisequark - 但絕對沒有錯與把一個按鈕,在tableHeaderView,幷包括一個會冒險您的應用程序從App Store被拒絕。 tableHeaderView被設計成一個包含你選擇的任何元素的任意視圖。

就您的問題而言,可能是您的視圖模糊了您的按鈕,或者,它可能只是一個應該向Apple報告的錯誤。

10

我有一個類似的問題 - 視圖中的文本框和按鈕設置爲表頭視圖,它不會響應觸摸事件。 setAutoResizing以編程方式爲我工作。

我的控制器擴展的UITableViewController和viewDidLoad中看起來是這樣的:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    MYCustomWidget *headerView = [[[NSBundle mainBundle] 
       loadNibNamed:@"MYCustomWidgetView" owner:self options:nil] 
       objectAtIndex:0]; 

    [headerView setAutoresizingMask:UIViewAutoresizingNone]; 

    self.tableView.tableHeaderView = headerView; 
} 

( 'MYCustomWidget' 延伸的UIView,和 'MYCustomWidgetView' 是一個XIB文件)。

2

我的情況與Danny Hall's相似(表頭視圖是UIImageView,並且UIButton是UIImageView的子視圖)。就我而言,問題似乎是由按鈕是圖像視圖的子視圖造成的。對我而言,創建一個UIView「contains」視圖,使圖像視圖和按鈕都是「包含」視圖的子視圖。奇怪。

1

tableHeaderView具有0高度同時它在處理拉伸的UITableView

使用本的UIView子類來設置強恆定的高度,而忽略的UITableView處理

#import <UIKit/UIKit.h>             
@interface CustomHeaderCell : UIView 

@end 

//----- 

@import "CustomHeaderCell.h" 

@implementation CustomHeaderCell 


-(void)setFrame:(CGRect)frame { 
    frame.size.height = 43; // !!! constant height 
    [super setFrame:frame]; 
} 

@end 
2

奇怪的是,表格標題視圖顯然不正確調整大小。 我使用自動佈局,所以自動調整掩碼不適合我。檢查我的看法層次結構後: enter image description here

,發現我的自定義標題視圖有不正確的高度,所以才把少了一半是可點擊(見突出顯示視圖):

enter image description here

的手動更新它的高度固定的問題:

- (void)viewDidLayoutSubviews { 
    CGRect frame = self.tableView.tableHeaderView.frame; 
    frame.size.height = 116.0; 
    self.tableView.tableHeaderView.frame = frame; 
} 

enter image description here

另外,表格視圖標題高度在方向更改後可能會失效。這個問題也可以通過提供的解決方案來解決。

-1

不要忘記設置頁腳高度:

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ 
0

我有同樣的問題UIButtons行動不UITableView's頭視圖中工作。首先我想向setAutoresizingMask閱讀.None和@Davyd的@Alexey我意識到我沒有設置頭的高度的答案後不工作然後查看,然後我把它想: -

self.tablevwMain.tableHeaderView?.frame = CGRect(x: 0, y: 0, width: width_view, height: your_height) 

和所有UIButton'sUITableView's標題視圖正常工作。