Intereting Posts
UIKeyboardTypeNumberPad बिना किए गए बटन के मॉडल दृश्य नियंत्रक का उल्लंघन करने के लिए इशारे पहचानकर्ता / क्रिया पद्धतियां संलग्न करना? आईओएस 10 में स्प्राइटकिट कैमेरा स्थिति सुधार? plist सरणी में आइटम गिनती आईफोन – एसडीके में "ओपन इन"? MPMusicPlayerController सूचनाओं को पोस्ट नहीं कर रहा है? मैं अपने iPhone को एक निश्चित सीमा से ऊपर ध्वनि आवृत्तियों के लिए कैसे सुन सकता हूं? UICollectionView में अंतिम आइटम संक्रमित नहीं है – स्विफ्ट कोकोपोड्स पॉड स्थिर बिल्ड सेटिंग IOS / Objective-C – मैं एक आईफोन ऐप से एक वेब सर्वर डेटाबेस कैसे पूछूं? उद्देश्य सी में आरटीएसपी स्ट्रीमिंग चुटकी के दौरान केंद्र एसकेएससाइट नोड कैसे iPhone में छवि से लाल आँख को दूर करने के लिए? मैं cocos2d परिवेश के बाहर एक cocos2d गेम के लिए एक आभासी जोस्टिक कैसे लागू कर सकता हूँ? यूआईपीसीटीओर्ड का उपयोग करके जीआईएफ को मेल विंडो में पेस्ट करना चाहते हैं

कस्टम एमके एन्नोटेशनदृश्य टच ज़ोन हास्यास्पद रूप से संकीर्ण है

मेरी कस्टम MKAnnotationView उपवर्ग यह image संपत्ति सेट नहीं करते हैं इसके बजाय, यह प्रदर्शित करने के लिए कुछ उप-दृश्यों को संभालता है।

मैं एनोटेशन टच का पता लगाने के लिए अपने प्रतिनिधि में public func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) को लागू public func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) हूं I

चूंकि स्पर्श ज़ोन डिफ़ॉल्ट रूप से image संपत्ति के साथ गिना जाता है, मेरा एनोटेशन दृश्य स्पर्श ज़ोन 1px बड़ा है यह मज़ाकीय है।

यह है कि मैं इसे कैसे बनाऊं:

 init(annotation: JZStreamAnnotation) { self.imageView = UIImageView.init(image: <an image>) self.imageView.contentMode = .center super.init(annotation: annotation, reuseIdentifier: JZStreamAnnotationView.identifier) self.canShowCallout = false self.imageView.center = CGPoint(x: self.frame.width/2, y: self.frame.height/2) self.addSubview(self.imageView) } 

मैंने इस पोस्ट को पढ़ा है , लेकिन मुझे पता नहीं है कि हिट टेस्ट पद्धति कैसे काम करती है। यहाँ एक कार्यान्वयन है जो कुछ नहीं:

 override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { if point.x > -100, point.x < 100, point.y > -100, point.y < 100 { //return self //return self.imageView return super.hitTest(point, with: event) } return .none } 

if क्लॉज में आग लगने पर एक ब्रेपॉइंट होता है, लेकिन जो कुछ भी लौटाता है ( super / self / imageView ) कुछ नहीं करता है

अन्त में, अगर मैं हिट को लागू करता हूं तो ऐसा लगता है:

 override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { return .none } 

और अगर मैं अपने एनोटेशन पर क्लिक करें, सही केंद्र देखें, public func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) प्रतिनिधि निकाल दिया जाता है, तो विधि!

टच ज़ोन को विस्तारित करने के लिए कोई सलाह? 🤔

Solutions Collecting From Web of "कस्टम एमके एन्नोटेशनदृश्य टच ज़ोन हास्यास्पद रूप से संकीर्ण है"

जहां तक ​​मुझे समझा जाता है, जहाँ तक func point(inside:with:) और hitTest(point:with:) उस क्षेत्र को बड़ा करने में मदद नहीं करता जो प्रतिनिधि को public func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)

आखिरकार, मैंने मेरी एनोटेशन सबव्यूज़ को संलग्न करने और एंकर पॉइंट को ठीक करने के लिए एमके एन्नोटेशन व्यू फ़्रेम को बढ़ाकर समाप्त किया, जहां मैं अपना एनोटेशन सेंटर चाहता था

 self.frame = CGRect(x: 0, y: 0, width: self.myLabel.frame.width, height: self.myLabel.frame.height) self.centerOffset = CGPoint(x: self.frame.width/2, y: self.myImageView.frame.height/2) 

फिर मैंने point(inside:with:) हटा दिया point(inside:with:) और hitTest(point:with:) ओवरराइड जो कुछ नहीं किया

यही एकमात्र तरीका है कि मैं अपना एनोटेशन पूरी तरह से प्रतिक्रियाशील देखने के लिए सफल रहा।