如何在SwiftUI中防止同时点击两个按钮?

3

在 Swift 或 Objective-C 中,我可以将 exclusiveTouch 属性设置为 true 或 YES,但在 SwiftUI 中该如何操作?

2个回答

2

Xcode 11.3

在你的结构体init()内设置exclusiveTouchisMultipleTouchEnabled属性,或将其放置在AppDelegate.swift中,以适用于整个应用程序:

struct ContentView: View {

init() {

        UIButton.appearance().isMultipleTouchEnabled = false
        UIButton.appearance().isExclusiveTouch = true

        UIView.appearance().isMultipleTouchEnabled = false
        UIView.appearance().isExclusiveTouch = true

        //OR

        for subView in UIView.appearance().subviews {

            subView.isMultipleTouchEnabled = false
            subView.isExclusiveTouch = true

            UIButton.appearance().isMultipleTouchEnabled = false
            UIButton.appearance().isExclusiveTouch = true
        }
    }

var body: some View {

VStack {
     Button(action: {
                print("BTN1")
            }){
                Text("First")
            }

     Button(action: {
                print("BTN2")
            }){
                Text("Second")
            }
   }  
 }
}

0
可以像下面这样处理:
struct ContentView: View {

    @State private var isEnabled = false

    var body: some View {
        VStack(spacing: 50) {
            Button(action: {
                self.isEnabled.toggle()
            }) {
                Text("Button 1")
            }
            .padding(20)                
            .disabled(isEnabled)


            Button(action: {
                self.isEnabled.toggle()
            }) {
                Text("Button 2")
            }
            .padding(50)
            .disabled(!isEnabled)
        }
    }
}

点击其中一个按钮后,您能否启用这些按钮?添加一个计时器? - Alan Wu
是的。点击启用按钮将使其禁用,同时启用另一个按钮。关于计时器,那不是最初的问题的一部分。 - Partha G
两者都需要启用。并且要防止多点触控。 - FRIDDAY
@FRIDDAY 提供的示例是为了让您了解如何启用一个选项,而另一个选项应处于禁用状态。由于问题已更改,因此答案也需要相应修改。 - Partha G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接