Swift:如何在执行触摸操作时禁用用户交互?

时间:2015-03-16 01:14:44

标签: swift

我正在使用精灵套件,如果用户触摸屏幕,那么

中的操作
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    /* Called when a touch begins */

    for touch: AnyObject in touches {
    }
}

进行。但是,当他们执行时,用户仍然可以点按屏幕,应用程序会尝试再次运行操作。

如何在操作运行时禁用触摸交互/触摸功能中的操作?

8 个答案:

答案 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)

-SwiftUI

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)

只需转到情节提要,然后在您要禁用用户交互的任何对象中取消选中此选项 enter image description here

答案 7 :(得分:0)

如果要禁用Buttons用户的交互,只需在屏幕加载时执行此操作。

self.btnname.isUserInteractionEnabled = false

如果要禁用用户交互作为视图,则只需删除按钮名称并添加视图名称即可。

如果出于某些原因要启用交互,只需将“ false”更改为“ true”。