【发布时间】:2014-07-31 04:27:53
【问题描述】:
这或多或少是这篇文章的延续:Button in UITableViewCell not responding under ios 7
我遇到了同样的问题,并且已经尝试了线程中的每一个建议。显然我不拥有该问题,因此我无法对其进行编辑以提供更多信息,因此我现在发布此问题!
问题:
我有一个加载的 VC 笔尖,其中有一个表格视图,我根据其中的行数调整大小。每一行都由使用 nib 文件的自定义 uitableviewcell 子类组成。该类/笔尖中有 4 个按钮。我现在可以在 iOS 6 或 iOS 8 中加载这段代码,它运行良好。我没有 iOS 7 设备,所以我绑定到 7.1 的模拟器(这是我猜报告此问题的用户今天也在使用的版本)。现在在模拟器和用户的手机中,我可以触摸/单击该 VC 上的所有其他内容,除了单元格中的任何按钮。就好像他们将 UserInteractionEnabled 设置为 NO,但他们没有,也没有任何父视图(我将很快介绍)。
尝试过的解决方案:
-使用和不使用自动布局从头开始完全重新创建笔尖
-在cell类的awakeFromNib中调用[self.contentView addSubview:button]
-尝试在运行时使用[self.contentView addSubView:button] 将按钮重新添加到contentView
- 确保我能找到的层次结构中的每个视图导致这些按钮都将userInteractionEnabled 设置为YES 的四倍。 (包括但不限于 tableview 本身、单元格、contentView 以及当我向设置的按钮添加“父视图”时)
-尝试使用只包含按钮的父视图提升所有按钮
-所有按钮都在事件堆栈的顶部(视觉底部)(添加和删除是另外两个按钮):
-已将表格单元格选择从单个设置为无。
-我没有在我的单元格类中覆盖 layoutSubviews
-如果我这样做,我无法将任何视图移出内容视图,因为 Interface Builder 会将它们完全移出单元格。
-我尝试在运行时仅在 ContentView 上禁用 userInteractionEnabled 而没有任何变化
-我尝试将不同按钮的 tableview [cell bringSubviewToFront:cell.button]; 的单元格创建代码放入相同的结果。
希望有帮助的事实:
-我尝试将层次结构中所有视图的所有背景颜色设置为不同的颜色,这样我就可以在运行时直观地对其进行调试......它看起来完全符合预期。没有重叠或覆盖。 (这仅限于单元格中的视图)
-这是 TableView 的所有设置:
-我试图在新的 XCode 6 中加载它以使用可视化调试器,但它附带的 7.1 模拟器实际上完美地运行了代码,因此我可以调试它...
-这是VC中的出队代码:
NiTGroupTimeCell* cell = (NiTGroupTimeCell*)[tableView dequeueReusableCellWithIdentifier:ident forIndexPath:indexPath];
-这是VC的viewDidLoad中的代码,用于设置带有表格的单元格笔尖(它是2,因为这是从头开始的):
[self.timesTable registerNib:[UINib nibWithNibName:@"NiTGroupTimeCell2" bundle:nil] forCellReuseIdentifier:@"GroupTime"];
-所有连接都是通过 IB 建立的。这些都在使用 IBAction 或 IBOutlet。
-我在所有按钮方法中都有NSLog 语句来测试它们是否被实际调用,但我也使用断点进行了测试。所有都不会在测试中触发。
-唯一实现的TableView委托或数据源方法如下:
-(int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
-根据建议,我带 Revel 去看,发现一个谜 UILabel 和 UIImageView 在视图中....但是你可以看到他们的框架都是零,所以他们不应该进入恐怕会回到我们原来的位置:
UILabel 框架:
UIImageView 框架:
IIRC 我之前将此视为模拟器错误,但由于它发生在用户的设备上,因此它一定是一个实际问题,并且它阻碍了我的管道,因此非常感谢您的帮助!提前致谢!
PS 我很乐意发布任何内容,但是由于调试的所有变化,我不知道人们会想看到什么,我不想让这篇文章超载,因为我知道它会是长与其他一切。
【问题讨论】:
-
这个视图上是否有任何 uitouchgesturerecognizers?
-
意识到这是很小的一点,但你永远不知道......你不需要在 dequeueReusableCellWithIdeintifier 时强制转换 NiTGroupTimeCell,因为它会在不这样做的情况下返回单元格 OK (NiTGroupTimeCell*)
-
罗马:不,没有 UITouchGestureRecognizers。
-
Jeely:很高兴知道,谢谢^^
-
你能贴出捕捉 UIButton 动作的代码吗? UIButton 是拖到 xib 上的,还是您以编程方式制作的? ....最后一个愚蠢的问题 - 您使用的模拟器是 3.5 英寸还是 4 英寸屏幕?
标签: ios objective-c uitableview