【问题标题】: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 使按钮不再响应点击。
编辑:
重读你的帖子后,我想我明白你在说什么了:
-
“每次点击屏幕,屏幕上的文字都会发生变化”——这意味着点击按钮以外的任何地方。
-
“但是当用户点击按钮a时,这个触摸事件应该被禁用。当用户点击按钮b时,它应该再次被激活。”
因此,您希望通过单击按钮来禁用/启用屏幕上其他位置的点击。
我建议为您的视图控制器使用附加到内容视图的点击手势识别器 (UITapGestureRecognizer)。它们在触发时触发动作,并具有 isEnabled 属性。如果您将其设置为 false,则点击手势识别器将停止响应点击。