我正在使用精灵套件,如果用户触摸屏幕,那么
中的操作override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch: AnyObject in touches {
}
}
进行。但是,当他们执行时,用户仍然可以点按屏幕,应用程序会尝试再次运行操作。
如何在操作运行时禁用触摸交互/触摸功能中的操作?
答案 0 :(得分:25)
尝试从触摸对象获取视图,然后禁用其上的用户交互。
touch.view.isUserInteractionEnabled = false
答案 1 :(得分:25)
在 Swift 3.0 中:
self.view.isUserInteractionEnabled = false
答案 2 :(得分:17)
要在应用范围内禁用用户互动,请使用:
UIApplication.shared.beginIgnoringInteractionEvents()
UIApplication.shared.endIgnoringInteractionEvents()
答案 3 :(得分:2)
在执行方法时,可以使用boolean类变量来停止交互,此后,只需在方法末尾更改boolean的值即可。
在第一种方法的末尾使用UIApplication.shared.beginIgnoringInteractionEvents()
,然后更改布尔值,然后在起始行UIApplication.shared.endIgnoringInteractionEvents()
中使用另一种方法。
答案 4 :(得分:1)
SomeView()
.allowsHitTesting(false)
答案 5 :(得分:1)
对于SwiftUI,请在@ mojtaba-hosseini答案上进行扩展。 您想要确保用某种颜色填充视图,但“清除颜色”除外(您可以随时更改不透明度)。我还添加了模糊以隐藏元素。这是对我有用的东西:
SwiftUI:
ZStack{
SomeView().blur(radius: 12)
Rectangle()
.fill(Color.white.opacity(0))
.allowsHitTesting(false)
}
另一种禁用用户交互的方式,例如滚动或按钮点击,但将操作附加到用户点击(例如,向用户发送此功能即将到来或在付费墙后面的消息):
SwiftUI:
VStack{
SomeView().blur(radius: 12)
}
.contentShape(Rectangle())
.onTapGesture {
print("No access!")
}
答案 6 :(得分:0)
答案 7 :(得分:0)
如果要禁用Buttons用户的交互,只需在屏幕加载时执行此操作。
self.btnname.isUserInteractionEnabled = false
如果要禁用用户交互作为视图,则只需删除按钮名称并添加视图名称即可。
如果出于某些原因要启用交互,只需将“ false”更改为“ true”。