容器视图内的按钮不起作用
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 布局内),但是当我单击任务按钮然后重新打开应用程序时它不起作用