繁体   English   中英

UITutView在UITableView tableHeaderView中没有响应触摸

[英]UIButton in UITableView tableHeaderView not responding to touches

好吧,我觉得我是一个白痴,我无法让这个工作,而且其他任何答案都没有让我到任何地方。

我有一个非常简单的UIView ,我在.xib中定义并加载为我的UITableViewControllertableHeaderView

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

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

但是 ,当我向我的headerView添加一个UIButton ,无论我尝试什么,它都没有响应触摸。

我已经确认标题和按钮的帧是正确的,并且都将userInteractionEnabledYES

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

这是一些调试信息:

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 viewDidAppear:它工作正常。 但我显然想先解决一下改变框架的问题。

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

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

试试这个,

    [button sendActionsForControlEvents:UIControlEventTouchUpInside];

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM