【问题标题】:How do I make the elements in my UIView responsive?如何使 UIView 中的元素具有响应性?
【发布时间】:2017-02-20 05:35:21
【问题描述】:

我的目标是创建一个警报,其中包含三个文本字段,一个比其他字段高,一个图像在点击时允许用户选择一张图片来替换设置的默认图片。

在为此搜索库失败后,我决定通过在屏幕外放置UIView 来创建自己的警报,并在按钮提示时放大屏幕;它包含我需要的所有元素。

当我运行应用程序时,视图会正确弹出,但视图上的所有元素都没有响应触摸。我检查了isUserInteractionEnabled 的所有内容都已打开。

同样奇怪的是,当我将视图保持在屏幕上时(而不是将其放置在 Storyboard 上一段距离),所有元素都可以正常工作。

我假设它与动画有关。我用淡入而不是置换对其进行了测试,结果是一样的——元素没有响应。

【问题讨论】:

  • 您是否检查过您的警报视图前面是否还有其他视图?如果您可以发布一些有用的代码。
  • 那些非响应元素你的视图的实际范围内吗?
  • @Sparky 它没有;我知道这一点,因为当警报放大到视图时,它会显示在视图控制器中所有其他元素的前面。除了可能是故事板上视图位置的屏幕截图外,我没有任何与此问题相关的代码。我认为动画代码无关紧要,因为当我通过弄乱视图的 alpha 进行简单的淡入淡出以及使用名为 pop 的动画库进行更复杂的动画时,它不起作用。
  • @holex 在故事板上,它们超出了界限,但通过动画引入。我也做了一个测试,我把它保持在边界内,然后做了一个淡入淡出,但它仍然没有用。

标签: ios swift xcode uiview storyboard


【解决方案1】:

所以我想通了。我使用了调试视图层次结构,发现警报在其背后的元素后面,即使它仍在显示(出于某种原因)。我更改了 UIView 的 zIndex 并且它起作用了!

【讨论】:

    【解决方案2】:

    为了让您的元素具有响应性,您必须将点击它们的操作链接到您的视图代码。您可以通过在故事视图上按住 ctrl 单击您的元素然后拖动到视图控制器来以非编程方式执行此操作。然后选择动作而不是出口,并选择何时触发您想要的动作(底部)。然后在 viewController 中插入你的代码。

    【讨论】:

    • 它们以编程方式链接。实际上,我很确定即使他们没有,它仍然应该是响应式的。未连接的按钮仍然可以点击,但不执行任何操作。
    猜你喜欢
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2015-03-29
    • 2015-10-24
    • 2020-11-28
    • 2023-04-02
    相关资源
    最近更新 更多