好吧,我觉得我是一个白痴,我无法得到这个工作,并没有任何其他的答案是让我在任何地方。UITableView中的UIButton tableHeaderView没有响应
我有一个非常简单的UIView
,我在的.xib定义和我装我的UITableViewController
的tableHeaderView
:
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像素),但由于某种原因,其框架在某个点发生更改,导致按钮落在其框外,因此不接触。
什么会改变标题的框架像这样?我根本没有任何限制。
你有一个按钮的目标/选择器?你是如何添加按钮IB的?您没有发布任何与接受按钮的按钮实际相关的代码。 – JDM 2015-04-01 00:29:58
是按钮被添加到标题视图的xib并通过插座动作连线。很典型。但是,按钮甚至不会在被触摸时突出显示,所以它甚至没有达到那么远。 – devios1 2015-04-01 02:44:26
你能否也打印'po self.loginButton.superview' – 2015-04-01 04:18:26