मेरे पास एक बटन है जिसे मैं गायब करना चाहता हूं अगर बटन के अलावा कुछ भी टैप किया गया हो। कार्रवाई: हटाएँ बटन के लिए:क्या टैप जेस्चर रिकॉग्नाइज़र द्वारा बटन टैप इवेंट ओवरराइड हो जाता है?
[self.deleteButton addTarget:self action:@selector(deleteButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
युक्त देखने के लिए टैप जेस्चर पहचानकर्ता जोड़कर बाद में पीछा किया:
[self.superview addGestureRecognizer:self.tapOutsideDelete];
जब मैं ऐसा करते हैं, deleteButton के लिए कार्रवाई है तो मैं लक्ष्य रखा निष्पादित नहीं किया गया, जैसे कि बटन टैप पहचाना नहीं गया है। इशारा पहचानकर्ता इस मामले में काम करता है। लेकिन जब मैं डिलीट बटन टैप करता हूं तो यह भी काम करता है, जो मुझे लगता है कि टैप इशारा पहचानकर्ता को बटन टैप पर प्राथमिकता है।
यदि मैं इशारा पहचानकर्ता को हटा देता हूं, तो हटाएं बटन सही तरीके से काम करता है।
मैं स्पष्ट रूप से समझ नहीं पा रहा हूं कि इन दो घटनाओं को एकसाथ कैसे संभालना है। मुझे क्या करना चाहिये?
(हटाएं बटन एक टेबल व्यू सेल के डिलीट बटन की नकल कर रहा है, लेकिन इस मामले में मेरे पास हेडर व्यू में है। मैं डिलीट बटन को गायब होने के लिए एक विधि कॉल करने की उम्मीद करता हूं जब मैं तालिका में कहीं भी टैप करता हूं बटन स्वयं, उसी तरह से यह एक सेल में काम करता है।)
आप weirdness स्वयं के बजाय self.superview को इशारा पहचानकर्ता जोड़ने का एक सा (या self.view अगर यह एक दृश्य नियंत्रक है) प्राप्त कर सकते हैं: आप
gestureRecognizer:shouldReceiveTouch:
विधि को लागू करने की जरूरत है। यह उस तालिकादृश्य में जोड़ देगा जिसमें हेडर व्यू के बजाय हेडर व्यू शामिल है, जो आपके इरादे से हो सकता है या नहीं भी हो सकता है। – MusiGenesis[इशारा पहचानकर्ता और बटन क्रिया] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/4825199/gesture-recognizer-and-button-actions) –