0

我有完全一样的问题

用作自定义 UITableViewCell 的 XIB 中的自定义按钮不响应点击(ios7)

基本上 UITableViewCell 中的按钮不再起作用。

它曾经在 IOS 6 中运行良好。在 IOS 7 中不再适用。

我看到 2 人有相同的解决方案

[cell.contentView setUserInteractionEnabled: NO]

但是,该解决方案根本没有意义。

这些按钮显然是 cell.contentView 的子视图。如果我们将 userinteractionenabled 设置为 no,它应该禁用与 cell.contentView 的所有子视图的用户交互。那么这到底是怎么回事呢?

实际上,IOS 7 到 IOS 6 之间发生了哪些变化,所以这个问题首先存在。

注意:它并没有真正解决我的问题。

正如我所怀疑的那样, UITableViewCell 中的按钮确实是 contentView 的子视图

2013-10-11 13:07:04.946 [15131:a0b] self: <BGCatalogTableCellForCatalog: 0x12e12d20; baseClass = UITableViewCell; frame = (0 0; 320 220); layer = <CALayer: 0x12e12c70>>
2013-10-11 13:07:04.947 [15131:a0b] self.contentView: <UITableViewCellContentView: 0x12e12600; frame = (0 0; 320 220); gestureRecognizers = <NSArray: 0x12e12440>; layer = <CALayer: 0x12e125d0>>
2013-10-11 13:07:04.947 [15131:a0b] self.btnBrochureButton: <UIButton: 0x12e100b0; frame = (0 0; 160 219); opaque = NO; autoresize = RM+TM+BM; layer = <CALayer: 0x12e102c0>>
2013-10-11 13:07:04.948 [15131:a0b] self.btnBrochureButton.superview: <UITableViewCellContentView: 0x12e12600; frame = (0 0; 320 220); gestureRecognizers = <NSArray: 0x12e12440>; layer = <CALayer: 0x12e125d0>>
2013-10-11 13:07:04.948 [15131:a0b] self.btnBrochureButton.superview.superview: <UITableViewCellScrollView: 0x12e12920; frame = (0 0; 320 220); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x12e12840>; layer = <CALayer: 0x12e128f0>; contentOffset: {0, 0}>
2013-10-11 13:07:04.949 [15131:a0b] self.btnBrochureButton.superview.superview.superview: <BGCatalogTableCellForCatalog: 0x12e12d20; baseClass = UITableViewCell; frame = (0 0; 320 220); layer = <CALayer: 0x12e12c70>>
2013-10-11 13:07:04.949 [15131:a0b] <UIButton: 0x12e100b0; frame = (0 0; 160 219); opaque = NO; autoresize = RM+TM+BM; layer = <CALayer: 0x12e102c0>>

所以 btnBrochureButton.superview 和 self.contentView 都是 0x12e12600

4

2 回答 2

2

我解决了问题。从 IOS 7 开始,contentView 不再是 UITableViewCell 的直接子视图。这会导致复杂化。

于 2013-10-20T09:32:32.473 回答
1

我不确定这是否会对您有所帮助,但我发现我的问题与您引用的帖子中描述的问题有关,但我还有一个难题。出于与您描述的相同的原因,这contentView.userInterActionEnabled = NO对我不起作用。

在我的应用程序中,我动态调整表格视图单元格的大小,在运行时根据单元格中的内容更改它们的高度。这为我创建了一个单独的问题,其中单元格正在调整大小,但 contentView 出于某种原因没有被调整大小。 所以我的按钮是可见的,但在 contentView 的范围之外,因此不能用于用户交互。

我最终发现它的方法是将我的 contentView 的背景颜色设置为不同的颜色,我终于看到它太短了。在计算父单元格的总高度后,我通过更改 contentView 的高度解决了这个问题。

我希望这可以帮助你,或者至少给你一些新的检查。

于 2013-10-19T17:20:53.977 回答