使用 IOS9 时,无法在 UITable 的部分标题上的 UIButtons 上触发触摸事件(IOS10 很好)

Posted

技术标签:

【中文标题】使用 IOS9 时,无法在 UITable 的部分标题上的 UIButtons 上触发触摸事件(IOS10 很好)【英文标题】:Unable to get touch events to fire on UIButtons on section headers of UITable when using IOS9 (IOS10 is fine) 【发布时间】:2017-09-20 21:56:20 【问题描述】:

ios 9 上,触摸表格部分标题上的按钮不起作用,但在 IOS 10 上工作正常。这是在 XCode 8 和 9 上使用 swift 3。我已经使用物理设备和模拟器进行了测试,始终使用同样的结果。我的按钮位于 StackView 内、StackView 内、内容视图内、用户标题内。我发现节页脚上的 UIButton 没有问题,但这不是我想使用它们的地方。当我在 IOS10 设备或模拟器上进行测试时,一切正常,但在 IOS9 上却没有。

奇怪的是,这似乎与 *** 上报告的 another problem 相似,它适用于 IOS9 但适用于 IOS10

【问题讨论】:

【参考方案1】:

我无法从这个描述中看出问题所在,但可以尝试一下。

在 Xcode 中运行应用程序,然后选择 Xcode>Debug>View Debugging>Capture View Hierarchy 菜单项。检查 StackView、按钮等的视图,并确保按照您的预期布局,没有任何东西遮挡可点击区域,并且视图大小和位置正确。

如果按钮位于尺寸不正确的视图中(例如宽度为零),或者位于将它们置于超级视图边界之外的偏移处,则点击将不起作用。但是,您不会注意到,除非将包含视图设置为剪辑到边界。否则,整个按钮将被绘制并看起来可点击。

我不能肯定地说就是这样,但是对于这些类型的问题,一个可能的嫌疑人是重叠视图窃取了触摸或触摸被超级视图剪辑。

【讨论】:

感谢@clarus 的想法。我确实尝试过,但堆栈视图的布局似乎正确。我现在已经使用了您在其他领域建议的方法,它肯定有助于堆栈视图。这个特殊问题只在 iOS 9 中显示,在表头上有按钮,而不是 iOS 10 或 11。较新版本的 XCode 帮助解决了很多问题,但没有解决这个问题。它仍然存在。再次感谢。

以上是关于使用 IOS9 时,无法在 UITable 的部分标题上的 UIButtons 上触发触摸事件(IOS10 很好)的主要内容,如果未能解决你的问题,请参考以下文章

更改 UITable 部分背景颜色而不丢失部分标题

uisearchbar 在分组部分 uitable

IOS9 - 无法使用类型为“(字符串)”的参数列表调用“计数”

无法在 iOS9 中暂停 SKEmitterNode

无法在 ios 9 中为 AVCaptureDevice 访问相机。

将子视图添加到 UITable