como posso fazer o onTapGesture funcionar apenas se o usuário tocar no círculo e não dentro de todos os quadros do Círculo no SwiftUI? [duplicado]

Dec 05 2020

Estou usando este código para baixo para ler a torneira do usuário no círculo, o problema aqui é que funciona em todas as partes do frame 100X100, mas espero que funcione apenas no círculo preenchido com cores, como posso resolver esse problema?

    struct ContentView: View {
    

    var body: some View {

        
        Circle()
            .fill(Color.red)
            .frame(width: 100, height: 100, alignment: .center)
            .onTapGesture {
                print("tap")
            }
  
    }
}

Respostas

nicksarno Dec 06 2020 at 04:08

Um pequeno truque legal seria adicionar uma camada de fundo ao círculo (não pode ser 100% claro ou não renderizaria, então fiz opacidade 0,0001, que parece claro) e, em seguida, adicionei outro toque Gesto nessa camada. O novo gesto terá prioridade na área de fundo e podemos apenas deixá-lo sem nenhuma ação para que nada aconteça.

Circle()
    .fill(Color.red)
    .frame(width: 100, height: 100, alignment: .center)
    .background(
        Color.black.opacity(0.0001).onTapGesture { }
    )
    .onTapGesture {
        print("tap")
    }