首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >到底是怎么解决这个问题的[cell.contentView setUserInteractionEnabled: NO]?

到底是怎么解决这个问题的[cell.contentView setUserInteractionEnabled: NO]?
EN

Stack Overflow用户
提问于 2013-10-10 16:14:24
回答 2查看 345关注 0票数 0

我也有同样的问题

Custom buttons in XIB used as Custom UITableViewCell don't respond to taps (ios7)

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

它过去在iOS6中运行得很好,但在iOS7中就不行了。

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

代码语言:javascript
复制
[cell.contentView setUserInteractionEnabled: NO]

然而,这个解决方案一点意义都没有。

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

实际上,IOS 7到IOS 6之间发生了什么变化,导致这个问题首先存在。

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

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

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2013-10-20 17:32:32

从iOS7开始,contentView不再是UITableViewCell的直接子视图。

票数 2
EN

Stack Overflow用户

发布于 2013-10-20 01:20:54

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

在我的应用程序中,我动态地调整表格视图单元格的大小,在运行时根据单元格中的内容改变它们的高度。这给我带来了一个单独的问题,那就是单元格的大小正在被调整,,但是由于某种原因,contentView没有被调整大小。,所以我的按钮是可见的,但是在contentView的边界之外,因此不能用于用户交互。

我最终发现它的方式是将我的contentView的背景颜色设置为不同的颜色,我终于发现它太短了。

我希望这能帮助你,或者至少给你一些新的东西来检查。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19290438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档