如何在地球上 [cell.contentView setUserInteractionEnabled: NO];解决了这



我有完全相同的问题

XIB 中用作自定义 UITableViewCell 的自定义按钮不响应点击 (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

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

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

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

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

我希望这可以帮助您,或者至少为您提供一些新的东西来检查。

相关内容

最新更新