UITutView在UITableView tableHeaderView中没有响应触摸

时间:2015-04-01 00:14:06

标签: ios objective-c uitableview uibutton

好吧,我觉得自己像个白痴,我无法让这个工作,而SO上的其他答案都没有让我到任何地方。

我有一个非常简单的UIView我在.xib中定义并加载为tableHeaderView的{​​{1}}:

UITableViewController

标题.xib的文件所有者设置为我的控制器类,到目前为止这个工作正常。我的插座连接正确,我可以将标签设置为正确的值等。

,当我在headerView中添加UIView* headerView = [[NSBundle mainBundle] loadNibNamed:@"ProfileHeaderView" owner:self options:nil][0]; self.tableView.tableHeaderView = headerView; 时,无论我尝试什么,它都没有响应触摸。

我已经确认标题和按钮的框架是正确的,并且都UIButtonuserInteractionEnabled

我不能为我的生活弄清楚为什么这不起作用。我真的没有做任何我能想到的任何棘手的事情。

这里有一些调试信息:

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中设置断点,我会注意到我的标题视图帧高度已经变为130像素!

tableView:didSelectRowAtIndexPath:

我不知道造成这种情况的原因!当然,现在我知道这一点,如果我在po self.profileHeaderView <UIView: 0x15eb6790; frame = (0 0; 320 130); autoresize = W+H; layer = <CALayer: 0x15eb67f0>> 中明确地将帧的高度设置回194,那么它可以正常工作。但我显然想先解决一下改变框架的问题。

标题仍然正确绘制,并且在渲染时是正确的高度(194像素),但由于某种原因,它的帧在某个点上会发生变化,这会导致按钮落在其框架之外,因此不会接受接触。

像这样改变标题框架的内容是什么?我根本没有设置任何约束。

2 个答案:

答案 0 :(得分:5)

尝试使用它,

    [button sendActionsForControlEvents:UIControlEventTouchUpInside];

如果这恰当地调用了您的目标/选择器,则问题出在您的视图层次结构中。如果没有,则问题是您没有正确编码按钮的目标/选择器。

答案 1 :(得分:0)

也许你可以设置你的按钮backgroundColor是红色或其他颜色。你可以写这个'self bringSubviewToFront:xx',这意味着你将按钮设置为topView。