我制作了一个名为“SwitchCell”的自定义 UITableViewCell,它有一个开关。 在 iOS9 Only 中,使用 Xcode 7 beta,单元格中的内容 View 位于开关的顶部。 (查看 View 层次结构的屏幕截图。您可以清楚地看到单元格的内容 View 位于其他 View 之上。):
因此所有对 UISwitch 的触摸都被拦截,并且 IBAction 不会触发。 在 iOS8 中,这不是问题。请参阅 iOS 8.4 模拟器的屏幕截图。您可以看到控件顶部没有内容 View :
有人遇到过这个问题吗? 我尝试从头开始重新制作 NIB,但出现了相同的结果。
我的 NIB 是一个自由尺寸的 View ,没有状态栏。它有两个导出:一个用于 UILabel,一个用于 UISwitch。
编辑:请确保检查下面要求验证单元格的 Root View 不仅是 UIView 还是 UITableViewCell 的答案。这个问题也可能是这个的副作用。
最佳答案
经过更多的调查和搜索,我在这里找到了我的解决方案: Button in UITableViewCell not responding under ios 7
为我修复的是:
cell.contentView.userInteractionEnabled = NO;
这可以防止单元格内容 View 接管触摸事件,即使它位于其他 View 之上也是如此。
这个问题不仅发生在 iOS9 上,也发生在 iOS7 上。在 iOS8 中,内容 View 位于控件后面。
关于objective-c - iOS9 - UITableViewCellContentView 覆盖了 Cell 中的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31681481/