onTapgesture 禁用 View SwiftUI 的按钮

问题描述 投票:0回答:2

我有一个带有两个按钮的视图,我添加了

.onTapGesture
来切换视图。 但是在我添加
.onTapGesture
之后,按钮位于其下方并且没有响应。 有什么办法可以同时使用吗

MenuView()

.onTapGesture{
self.isShowing.toggle()
}
ios xcode swiftui
2个回答
1
投票

您正在寻找的是同步手势:

import SwiftUI

struct TestView: View {
  
  var body: some View {
    
    let tapGesture = TapGesture()
      .onEnded { _ in
        print("Menu tapped")
      }
    
    menuView
      .simultaneousGesture(tapGesture)
  }
  
  var menuView: some View {
    VStack {
      Button {
        print("Item 1 hit")
      } label: {
        Text("Item 1")
      }
      
      Button {
        print("Item 2 hit")
      } label: {
        Text("Item 2")
      }
    }
  }
}

struct TestView_Previews: PreviewProvider {
  
  static var previews: some View {
    Group {
      TestView()
    }
  }
}


0
投票
struct Previews: PreviewProvider {
    static var previews: some View {
        Color.gray
            .frame(width: 200, height: 100)
            .overlay(alignment: .topTrailing, content: {
                Menu(
                    content: {
                        Button("Edit", systemImage: "pencil") {}
                    },
                    label: {
                        Image(systemName: "ellipsis")
                            .padding()
                    }
                )
                .onTapGesture {
                    // This prevents card click on Menu click
                }
            })
            .onTapGesture {
                print("Card clicked", Date.now.timeIntervalSince1970)
            }
    }
}

我认为这就是你想要做的。菜单或视图内任何其他按钮上的空

.onTapGesture
可防止外部
.onTapGesture

运行
© www.soinside.com 2019 - 2024. All rights reserved.