UIScrollView下的UIButton没有响应触摸

Posted

技术标签:

【中文标题】UIScrollView下的UIButton没有响应触摸【英文标题】:UIButton under UIScrollView not responding to touch 【发布时间】:2015-05-21 23:36:25 【问题描述】:

我面临一个非常奇怪的问题。尝试对我的视图控制器实施约束会使我的按钮处于非活动状态。 我的视图层次结构是

UIVIew UISCrollView UI 视图 UI 视图 用户界面按钮

还有许多其他视图,但只是为了简单起见。一件事是有一个 UIImageView 对象,我根据大小将其拉伸到视图,但对象不是重叠或相似的,但可能是相关的。 基本上所有的约束都在故事板中。仅针对我使用手动设置的图像视图。

self.imageViewHeight.constant=imgHeight;

当我禁用自动布局时,按钮可以正常工作。

编辑:最新观察:刚刚发现模拟器 iPhone 6+ 在约束条件下运行良好。同样的情况也发生在类似的视图中,它更小,所以所有 iPhone 都只能在 4S 上运行。 所以这绝对是与屏幕尺寸和限制操作有关的问题。 看起来所有对象在创建后都在屏幕视图中,因此您必须滚动它才能看到它们处于非活动状态。

任何帮助将不胜感激。

【问题讨论】:

您能否提供一个示例项目的链接来演示您的问题? 代码运行良好,问题与情节提要和实现时的约束有关。 是的,这就是我要一个示例项目的原因。因为在不知道所有约束的情况下很难解决图形自动布局问题。 @Tobias thanx 试图帮助我,但不幸的是我无法将它作为零件发送,因为它有点复杂,而且整个事情都是针对不乐意分享他的项目的客户。跨度> 在调试中真正有用的一件事是将所有视图背景颜色设置为不同的颜色,这样您就可以查看是否有任何东西挡住了您的按钮。 【参考方案1】:

您似乎需要增加容器视图的框架宽度或高度(无论您需要什么)。 scrollView 的 contentSize 只影响它的滚动方式,这里不相关。

如果按钮在容器视图之外,它仍然会显示。但是,它无法响应任何触摸事件。

我们需要为触摸响应做些什么

您需要做的就是为滚动视图的 CONTAINER VIEW 设置一堆约束。从添加前导、尾随、底部、顶部、宽度相等和高度相等开始。现在在我的情况下,我需要固定的 Scrollview 的 contentSize,所以我将等宽约束的优先级更改为 750。对于动态 contentSize,您需要以编程方式设置优先级。

如果您有任何疑问,请在下方评论..

谢谢

【讨论】:

以上是关于UIScrollView下的UIButton没有响应触摸的主要内容,如果未能解决你的问题,请参考以下文章

添加到 UIScrollView 时 UIButton 不滚动

如何在UIScrollView上进行UIButton修复?

UIScrollView 在纵向模式和横向模式下的行为不同

scrollViewDidScroll(_ scrollView: UIScrollView) 到达底部后如何保持 UIButton 浮动?

IOS UIScrollView + UIButton 实现页面和顶部标签页水平滚动效果

将事件从 UIScrollView 转发到 UIButton