2015-04-01 82 views
2

好吧,我觉得我是一个白痴,我无法得到这个工作,并没有任何其他的答案是让我在任何地方。UITableView中的UIButton tableHeaderView没有响应

我有一个非常简单的UIView,我在的.xib定义和我装我的UITableViewControllertableHeaderView

UIView* headerView = [[NSBundle mainBundle] loadNibNamed:@"ProfileHeaderView" owner:self options:nil][0]; 
self.tableView.tableHeaderView = headerView; 

头的.xib的文件的所有者设置为我的控制器类,到目前为止,这很好。我的店铺被正确连接,我可以把我的标签,其正确的价值观等

,当我添加了一个UIButton我headerView,它不响应触摸,无论我怎么努力。

我已经确认标题和按钮的帧是正确的,并且都有userInteractionEnabled作为YES

我不能为了我的生活找出为什么这不起作用。我可以想到,我在这里确实没有做任何棘手的事情。

这里的一些调试信息:

po self.tableView.tableHeaderView 
<UIView: 0x17ef5420; frame = (0 0; 320 194); autoresize = W+H; layer = <CALayer: 0x17eda4a0>> 

po self.loginButton 
<UIButton: 0x17ec1630; frame = (80 164; 160 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x17eec760>> 

更新:我发现了一些新的证据。以上内容记录在viewDidLoad之内,并且帧具有正确的值。但是,如果我在tableView:didSelectRowAtIndexPath:中设置断点,我注意到我的标题视图框架高度已更改为130像素!

po self.profileHeaderView 
<UIView: 0x15eb6790; frame = (0 0; 320 130); autoresize = W+H; layer = <CALayer: 0x15eb67f0>> 

我不知道是什么原因造成的!当然,现在我知道这一点,如果我明确地将框架的高度设置回到viewDidAppear:中的194,它可以正常工作。但我显然希望能够解决任何改变我的框架的问题。

标题仍然正确绘制,并且呈现它时正确的高度(194像素),但由于某种原因,其框架在某个点发生更改,导致按钮落在其框外,因此不接触。

什么会改变标题的框架像这样?我根本没有任何限制。

+0

你有一个按钮的目标/选择器?你是如何添加按钮IB的?您没有发布任何与接受按钮的按钮实际相关的代码。 – JDM 2015-04-01 00:29:58

+0

是按钮被添加到标题视图的xib并通过插座动作连线。很典型。但是,按钮甚至不会在被触摸时突出显示,所以它甚至没有达到那么远。 – devios1 2015-04-01 02:44:26

+1

你能否也打印'po self.loginButton.superview' – 2015-04-01 04:18:26

回答

0

也许你可以设置你的按钮backgroundColor是红色或其他color.and你可以写这个'selfSubviewToFront:xx',这意味着你设置你的按钮到topView。

+0

我会尝试调用bringToFront,但我怀疑这会工作,因为根本没有重叠视图。 – devios1 2015-04-01 02:45:34

+0

你可以写'xx.clipsToBouds = yes;',xx是你的子视图 – 2015-04-03 02:58:07

4

尝试使用此,

[button sendActionsForControlEvents:UIControlEventTouchUpInside]; 

如果正确调用你的目标/选择器,那么问题是您的视图层次。如果没有,那么问题是你没有正确编码按钮的目标/选择器。

+0

这是有效的,它必须是与视图层次有关的任何指示什么检查?一切似乎完全按顺序。 – devios1 2015-04-01 16:38:41

+0

请参阅我的我发现视图层次结构有什么问题,但是现在我需要弄清楚是什么导致它的产生 – devios1 2015-04-01 16:48:43

+0

也许你对tableHeaderView和section header视图感到困惑,我试了一下,我明显可以在按钮期间调用按钮动作点击链接https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#//apple_ref/occ/instp/UITableView/tableHeaderView。发布你的代码,以便我们可以轻松地进行调试。 – 2015-04-02 06:11:27