2011-05-21 8 views
45

मेरे पास छविदृश्यों की एक श्रृंखला है जिसे मैं उनके टैग का उपयोग करके पहचानता हूं। मैंने छवियों में एक टैप इशारा जोड़ा है।UITapGestureRecognizer चयनकर्ता, प्रेषक इशारा है, ui ऑब्जेक्ट

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)]; 
[tableGridImage addGestureRecognizer:singleTap]; 
tableGridImage.userInteractionEnabled = YES; 
[singleTap release]; 

यह selectImage चयनकर्ता ठीक कॉल करने के लिए प्रबंधन करता है, लेकिन इस के रूप में इशारा गुजरता है। मुझे प्रेषक के रूप में छविदृश्य की आवश्यकता है ताकि मैं टैग प्राप्त कर सकूं।

कोई विचार है कि मैं छविदृश्य और इसका टैग कैसे प्राप्त कर सकता हूं?

उत्तर

51

मुझे पता चला कि टैग कैसे प्राप्त करें, जो मेरे लिए सवाल का सबसे महत्वपूर्ण हिस्सा था।

[(UIGestureRecognizer *)sender view].tag 

मैं अभी भी उत्सुक हूँ अगर कोई मुझे बताओ कैसे एक UITapGestureRecognizer चयनकर्ता के माध्यम से एक तर्क भेजने के लिए कर सकते हैं: के बाद से इशारा इस है, मैं दृश्य यह उसके साथ भेज दिया जाता है से जुड़ा हुआ है पता लगा। जैसे आप पहले किया था चयनकर्ता नाम के बाद:

डाल करने के लिए सुनिश्चित करें कि ":":

+1

मैं अभी भी उत्सुक हूँ अगर कोई मुझे बताओ कैसे एक UITapGestureRecognizer चयनकर्ता के माध्यम से एक तर्क भेजने के लिए कर सकते हैं। मैं भी। –

+1

एडम मुझे यकीन है कि UIImageView पर टैग के माध्यम से ऐसा करने का एकमात्र तरीका है। आप जानते हैं, छवि पर टैग का उपयोग करने के कुछ सकारात्मक हैं: कल्पना करें कि उदाहरण के लिए आपके पास एक से अधिक इशारा पहचानकर्ता था, या, आप किसी अन्य तरीके से छवि के बारे में उस जानकारी को प्राप्त कर रहे थे। यह अच्छा है कि यह जीआर के बजाए छवि पर है। महान प्रश्न/उत्तर के लिए यह एक महान टिप धन्यवाद है !! – Fattie

+0

धन्यवाद! इससे मुझे भी मदद मिली! –

24

केवल तर्क आप UITapGestureRecognizer चयनकर्ता के माध्यम से भेज सकते हैं निम्नलिखित के रूप में UITapGestureRecognizer ही है

UITapGestureRecognizer *singleTap = 
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)]; 

फिर चयन इमेज में पैरामीटर जोड़ें ताकि आप निम्न को निम्न प्रकार से पुनर्प्राप्त कर सकें:

-(void) selectImage:(UITapGestureRecognizer *)gestureRecognizer{ 

    //Get the View 
    UIImageView *tableGridImage = (UIImageView*)gestureRecognizer.view; 
} 
+2

आपकी व्याख्या के लिए धन्यवाद, Samidjo! एक अतिरिक्त नोट के रूप में, मुझे अपनी संपत्ति को देखने के लिए उपयोगी पाया गया है - '@property (कमजोर, nonatomic) id relatedObject'। इस तरह, आप दृश्य की संपत्ति को सौंपकर जो कुछ भी चाहते हैं उसे प्रभावी रूप से पारित कर सकते हैं! : डी –

2

यदि आपको हैंडलर के लिए अलग-अलग कार्यक्षमता की आवश्यकता है तो आप विशेष रूप से ब्लॉक्सकिट प्रोजेक्ट और this फ़ाइल देख सकते हैं। परियोजना CocoaPods प्रोजेक्ट है ताकि आप इसे आसानी से अपने टूलचेन में इंस्टॉल कर सकें।

एक उदाहरण पहले संदर्भित कोड फ़ाइल से:

UITapGestureRecognizer *singleTap = [UITapGestureRecognizer recognizerWithHandler:^(id sender) { 
    NSLog(@"Single tap."); 
} delay:0.18]; 
[self addGestureRecognizer:singleTap]; 

यह प्रभावी रूप से आप स्थापना के लिए एक इशारा पहचानकर्ता आसानी से एक छवि के लिए अनुमति दे सकता है।

3

@ dysan819 उत्तर से, मैं टैग के बिना ऑब्जेक्ट प्राप्त करने का प्रबंधन करता हूं। मेरे मामले में UILabel है।

- (void)labelTap:(id)sender { 
    NSLog(@"tap class: %@", [[(UIGestureRecognizer *)sender view] class]); 
    if ([[(UIGestureRecognizer *)sender view] isKindOfClass:[UILabel class]]) { 
     UILabel *lb = (UILabel*)[(UIGestureRecognizer *)sender view]; 
     NSLog(@"tap: %@", lb.text); 
    } 
} 

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

  • कोई संबंधित समस्या नहीं^_^