bagaimana cara membuat onTapGesture berfungsi hanya jika pengguna mengetuk lingkaran bukan di dalam semua bingkai Circle di SwiftUI? [duplikat]
Dec 05 2020
Saya menggunakan kode bawah ini untuk membaca tap pengguna di Circle, masalahnya di sini bahwa ini berfungsi pada semua bagian frame 100X100 tetapi saya berharap itu hanya berfungsi pada Circle yang diisi warna, bagaimana saya bisa menyelesaikan masalah ini?
struct ContentView: View {
var body: some View {
Circle()
.fill(Color.red)
.frame(width: 100, height: 100, alignment: .center)
.onTapGesture {
print("tap")
}
}
}
Jawaban
nicksarno Dec 06 2020 at 04:08
Peretasan kecil yang bagus adalah menambahkan lapisan latar belakang ke lingkaran (tidak bisa 100% jelas atau tidak akan dirender, jadi saya membuatnya opacity 0.0001 yang terlihat jelas) dan kemudian menambahkan tapGesture lain ke lapisan itu. Isyarat baru akan diprioritaskan di area latar belakang dan kita bisa membiarkannya tanpa tindakan jadi tidak ada yang terjadi.
Circle()
.fill(Color.red)
.frame(width: 100, height: 100, alignment: .center)
.background(
Color.black.opacity(0.0001).onTapGesture { }
)
.onTapGesture {
print("tap")
}
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'