2012-04-22 7 views
6

मैं एक ऐप बना रहा हूं जहां मेरे पास पृष्ठभूमि दृश्य है और इसमें छः UIImageView सबव्यू के रूप में हैं। मेरे पास UITapGestureRecognizer है, यह देखने के लिए कि UIImageView एस में से एक को टैप किया गया है और थैली हैंडल टैप विधि नीचे इशारा पहचानकर्ता कॉल करता है। हालांकि, जब मैं इसे चलाता हूं, तो hitTest:withEvent: हमेशा छवि दृश्य में से किसी एक पर टैप करते समय भी पृष्ठभूमि दृश्य देता है। जब मैं हिटटेस्ट को कॉल करता हूं तो क्या इस घटना के साथ कुछ करना पड़ता है?हिटटेस्ट: साथ:

धन्यवाद

- (void) handleTap: (UITapGestureRecognizer *) sender 
{ 
    if (sender.state == UIGestureRecognizerStateEnded) 
    { 
     CGPoint location = [sender locationInView: sender.view]; 
     UIView * viewHit = [sender.view hitTest:location withEvent:NULL]; 
     NSLog(@"%@", [viewHit class]); 
     if (viewHit == sender.view) {} 
     else if ([viewHit isKindOfClass:[UIImageView class]]) 
     { 
      [self imageViewTapped: viewHit]; 
      NSLog(@"ImageViewTapped!"); 
     } 
    } 
} 

उत्तर

12

UIImageView कर रहे हैं, उपयोगकर्ता संपर्क पंजीकृत नहीं करने के लिए कॉन्फ़िगर: इस तरह किसी भी ज्यामिति खोज के बिना डाल सकते हैं।

UIImageView प्रलेखन से

:

नई छवि दृश्य वस्तुओं डिफ़ॉल्ट रूप से उपयोगकर्ता की घटनाओं की उपेक्षा करने के लिए कॉन्फ़िगर कर रहे हैं। यदि आप UIImageView के कस्टम उप-वर्ग में ईवेंट को संभालना चाहते हैं, तो आपको ऑब्जेक्ट को प्रारंभ करने के बाद उपयोगकर्ता इंटेक्शनएनेबल प्रॉपर्टी के मान को स्पष्ट रूप से बदलना होगा।

तो, सही होने के बाद आप अपने विचारों को प्रारंभ आप होना चाहिए:

view.userInteractionEnabled = YES; 

इस बातचीत को फिर से चालू हो जाएगा और आप स्पर्श इवेंट रजिस्टर करने के लिए सक्षम होना चाहिए।

+0

आपको बहुत बहुत धन्यवाद! –

1

वहाँ अपने दृष्टिकोण (एकल जीआर युक्त दृश्य पर) है कि काम करता है पर एक पुनर्लेखन है, लेकिन यह हमारे मस्तिष्क चोट सही समन्वय प्रणाली है, जो निश्चित रूप से में समस्या है हो रही है बनाती हूँ कोड पोस्ट किया गया।

बेहतर उत्तर NIImageViews में एन इशारा पहचानकर्ताओं को संलग्न करना है। वे सभी एक ही लक्ष्य हो सकते हैं और एक ही हैंडल टैप: विधि का उपयोग कर सकते हैं। handleTap: डिफ़ॉल्ट रूप से

UIImageView *viewHit = (UIImageView *)sender.view; 
+0

आह अच्छी तरह से प्रोजेक्ट लगभग पूरा हो गया है और पूरी परियोजना कोड स्निपेट का उपयोग करती है लेकिन बाद में जब मैं इसे काम कर रहा हूं तो मैं इसे आजमाउंगा। फिर भी धन्यवाद। –

संबंधित मुद्दे