【问题标题】:Swift disable touchesEndedSwift 禁用 touchesEnded
【发布时间】:2021-04-20 15:06:01
【问题描述】:

当有人单击按钮时,我试图在我的代码中禁用 TouchesEnded 事件。当用户点击另一个按钮时,TouchesEnded 应该再次被激活。

因此,为了了解我的应用程序的功能,每次您点击屏幕时,屏幕上的文字都会发生变化。但是当用户单击按钮 a 时,应该禁用此触摸事件。当用户点击按钮 b 时,它应该会再次被激活。

我已经尝试过self.view.isUserInteractionEnabled = false,但是我无法点击按钮再次激活userInteraction。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: swift touch user-interaction


    【解决方案1】:

    根据您所描述的行为,我假设您的按钮是切换 isUserInteractionEnabled 的视图的子视图?将该标志设置为 false 也会阻止用户在视图的子视图上进行交互。您可以通过调整视图层次结构来解决此问题,以便您的按钮和您的 self.view 是兄弟姐妹:也就是创建一个容器视图,其中包含按钮和您引用的 self.view 作为子项。

    【讨论】:

      【解决方案2】:

      “禁用 TouchesEnded 事件”没有意义。

      您需要启用或禁用按钮并让事件正常发送。或者,正如您所说,您可以使用 isUserInteractionEnabled=false 使按钮不再响应点击。

      编辑:

      重读你的帖子后,我想我明白你在说什么了:

      1. “每次点击屏幕,屏幕上的文字都会发生变化”——这意味着点击按钮以外的任何地方。

      2. “但是当用户点击按钮a时,这个触摸事件应该被禁用。当用户点击按钮b时,它应该再次被激活。”

      因此,您希望通过单击按钮来禁用/启用屏幕上其他位置的点击。

      我建议为您的视图控制器使用附加到内容视图的点击手势识别器 (UITapGestureRecognizer)。它们在触发时触发动作,并具有 isEnabled 属性。如果您将其设置为 false,则点击手势识别器将停止响应点击。

      【讨论】:

        猜你喜欢
        • 2020-12-30
        • 2020-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多