मैं कैसे कर सकता हूँ onTapGesture केवल तभी काम करता है जब उपयोगकर्ता SwiftUI में सर्कल के सभी फ्रेम के अंदर सर्कल पर टैप नहीं करता है? [डुप्लिकेट]

Dec 05 2020

मैं सर्कल पर उपयोगकर्ता के टैप पढ़ने के लिए इस डाउन कोड का उपयोग कर रहा हूं, समस्या यह है कि यह फ्रेम 100X100 के सभी भाग पर काम करता है लेकिन मुझे उम्मीद है कि यह केवल रंग भरे सर्कल पर काम करना चाहिए, मैं इस मुद्दे को कैसे हल कर सकता हूं?

    struct ContentView: View {
    

    var body: some View {

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

जवाब

nicksarno Dec 06 2020 at 04:08

सर्कल में एक बैकग्राउंड लेयर जोड़ने के लिए एक अच्छा सा हैक होगा (यह 100% स्पष्ट नहीं हो सकता है या इसे प्रस्तुत नहीं करेगा, इसलिए मैंने इसे अस्पष्टता 0.0001 बना दिया है जो स्पष्ट दिखता है) और फिर उस लेयर पर एक और टैपग्योर जोड़ें। नया इशारा पृष्ठभूमि क्षेत्र में प्राथमिकता लेगा और हम इसे बिना किसी कार्रवाई के बस छोड़ सकते हैं।

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