容器视图内的按钮不起作用

Posted

技术标签:

【中文标题】容器视图内的按钮不起作用【英文标题】:Buttons inside container view does not work 【发布时间】:2018-03-06 15:37:11 【问题描述】:

我是一个开发 ios 应用程序的菜鸟,我现在正在开发一个。

我已经使用HomeViewController(主)设置了我的故事板,其中包含一个容器视图,并嵌入了另一个视图控制器。这个子视图控制器在视图的边界之外,当单击我的 HomeViewController 中的一个按钮时,它会在我的应用程序顶部显示动画,向这个子视图显示一个很酷的动画。一切正常。

在我的子视图控制器中,我只有 3 个按钮,当它们通过这个小动画显示在屏幕上时,它们是不可用的。它们不会触发按下按钮的动作,也不会以 iOS 风格“突出显示”。什么都没有发生。

我一直在搜索这方面的内容,我在父级上尝试了addChildViewController(),在子级上尝试了didMove(toParentViewController: UIViewController),我还以编程方式添加了它。当以编程方式添加时,它可以正常工作,但视图不尊重动画,只是显示在屏幕上而不跟随父容器,它确实随着动画移动。

接下来我该怎么做?

非常感谢

编辑:我的问题似乎与 UIView animations canceling any touch input 不重复

我正在为动画使用Spring 库。此外,在该线程中,他们正在谈论在动画未完成时用户交互被阻止。那不是我的情况。尝试按钮交互时动画完美完成。

【问题讨论】:

没有。我已经编辑解释了为什么不是这样。 【参考方案1】:

根据我的经验,有两个问题最常导致这种行为:

    您的某些容器视图将userInteractionEnabled 设置为false,或者 您的容器视图框架很小,您试图点击容器框架外的按钮,但该按钮不起作用。将其视为按钮的窗口,并且有一面看不见的墙挡住了触摸。

这两个最好使用 Xcode Debug View Hierarchy 进行调试,或者您也可以尝试 Reveal 应用程序,看看那里发生了什么。

【讨论】:

第一个解决方案不是问题。我已经检查了一百次我试图与之交互的所有东西都有userInteractionEnabled。事实上,看着你的回答,我又检查了一次。第二个我也认为不是,因为它具有几乎整个屏幕的合适尺寸。也许当我让动画在屏幕中显示容器时,我正在移动另一层并且按钮层永远不会到达屏幕? 你在层次结构的某处有滚动视图吗? 不,先生!我添加了另一个带有按钮的测试容器,它运行良好。我认为它不起作用,因为最初超出了视图的范围。这可能吗?我要疯了:( 你在制作什么动画?变换、约束或框架?动画变换可能会产生这样的行为。 我真的不知道:/ 我正在使用 Spring,它是一个动画库。我只是为包含容器视图的整个视图设置动画。但是,我正在缩小问题的范围。如果我将容器视图放在视图之外,我的意思是在主视图的根目录中不会发生这种不当行为。但是这样我就不能将它限制在屏幕之外并使用包装视图移动它。嗯嗯.....【参考方案2】:

最后,这种不当行为是因为我的容器中的包装视图比容器小,但是由于这两个不在屏幕上,我一开始并没有意识到。解决方案是让包装视图足够大以适合子容器。

很抱歉,这是一个愚蠢的问题。

谢谢大家

【讨论】:

【参考方案3】:

如果您使用自动布局。您可以检查您的约束是否正确。尤其是对于更大的OrEqual 和smallerOrEqual 约束仍然需要一个具体的约束。例如:

宽度 = 100@750

宽度

你不应该忘记第一个约束。

【讨论】:

以上是关于容器视图内的按钮不起作用的主要内容,如果未能解决你的问题,请参考以下文章

我想从片段中隐藏片段容器视图(在 MainActivity 布局内),但是当我单击任务按钮然后重新打开应用程序时它不起作用

弹出框内的按钮不起作用

颤振 |右对齐不起作用

NavigationLink 内的 tvOS 按钮不起作用

UITableview 内的单选按钮不起作用

将目标添加到闭包内的按钮不起作用