dev*_*os1 3 objective-c uibutton uitableview ios
好吧,我觉得我是一个白痴,我无法让这个工作,而且其他任何答案都没有让我到任何地方.
我有一个非常简单的UIView,我在.xib中定义并加载为tableHeaderView我的UITableViewController:
UIView* headerView = [[NSBundle mainBundle] loadNibNamed:@"ProfileHeaderView" owner:self options:nil][0];
self.tableView.tableHeaderView = headerView;
Run Code Online (Sandbox Code Playgroud)
文件的头文件.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>>
Run Code Online (Sandbox Code Playgroud)
更新:我发现了一些新的证据.以上内容记录在内部viewDidLoad,框架具有正确的值.但是,如果我设置了断点tableView:didSelectRowAtIndexPath:,我注意到我的标题视图帧高度已经改变为130像素!
po self.profileHeaderView
<UIView: 0x15eb6790; frame = (0 0; 320 130); autoresize = W+H; layer = <CALayer: 0x15eb67f0>>
Run Code Online (Sandbox Code Playgroud)
我不知道是什么造成了这个!当然,现在我知道这一点,如果我明确地将帧的高度设置回194 viewDidAppear:就可以了.但我显然想先解决一下改变框架的问题.
标题仍然正确绘制,并且在渲染时是正确的高度(194像素),但由于某种原因,它的帧在某个点上变化,这导致按钮落在其帧之外,因此不接收触摸.
会像这样改变标题框架的内容是什么?我根本没有设置任何限制.
试试这个,
[button sendActionsForControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
如果这恰当地调用了您的目标/选择器,则问题在于您的视图层次结构.如果没有,则问题是您没有正确编码按钮的目标/选择器.
| 归档时间: |
|
| 查看次数: |
1960 次 |
| 最近记录: |