2012-02-28 8 views
6

स्पष्ट रूप से मैंने छवि पर इशारा (जैसे टैप/क्लिक) दर्ज करने के लिए UIImageView बनाम UIImage को याद किया, मुझे uiimageview में छवि होना चाहिए और uiimageview पर uiimageview पर इशारा दर्ज करना आवश्यक नहीं है।मेरी छवि को क्लिक करने योग्य कैसे बनाएं

तो कोड के इस टुकड़े मेरे लिए काम करता है:

- (void)drawRect:(CGRect)rect {     
    Obj *obj = ... obj has imageHref which is NSString 

    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 
    [image drawInRect:CGRectMake((self.frame.size.width/2) - (image.size.with/2), (self.frame.size.height/2) - (image.size.height/2), image.size.width, image.size.height)]; 

} 

यह मैं केंद्रित छवि देता है, लेकिन बेकार है क्योंकि मैं इसे क्लिक करने योग्य होना चाहते हैं तो मैं हालांकि बस के बजाय इस तरह UIImageView के साथ कार्य करें:

- (void)drawRect:(CGRect)rect {     
         Obj *obj = ... obj has imageHref which is NSString 

         UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 

    CGRect rect1=CGRectMake((self.frame.size.width/2) - (image.size.width/2), (self.frame.size.height/2) - (image.size.height/2), image.size.width, image.size.height); 

    UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:radioStationImage]; 

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 

    [backgroundImageView addGestureRecognizer:tap]; 

         [backgroundImageView drawRect:rect1]; 

     } 

मैं इस छवि को क्लिक करने पर किसी प्रकार की कार्रवाई करने के लिए क्लिक करने योग्य बनाना चाहता हूं, यह कितना मुश्किल हो सकता है?

संपादित करें:

मैं वास्तव में लागू करने हूँ:

https://github.com/andreyvit/SoloComponents-iOS/tree/master/ATPagingView

कौन सा साफ पेज पुस्तक प्रदान करता है। लेकिन स्क्रीन नहीं पेज 1, 2 आदि के बीच में क्लिक करने योग्य छवियों ..

संपादित करें 2 के साथ:

यह आज पर कोई परिप्रेक्ष्य?

उत्तर

2

डिफ़ॉल्ट रूप से UIImageView इसकी संपत्ति userInteractionEnabledNO पर सेट है।

कार्य करें:

[imageView setUserInteractionEnabled:YES]; 
+0

मैं शायद सवाल अद्यतन है कि आप जहां मदद कर सकते हैं मैं – London

7

आप कस्टम इस के लिए ड्राइंग (drawRect:) की जरूरत नहीं है। जब आप दृश्य को लोड करते हैं तो इंटरफ़ेस बिल्डर में या loadView में इस दृश्य के आधार पर UIImageView को उप-दृश्य के रूप में जोड़ें)। इसके बाद आप उस दृश्य में UITapGestureRecognizer जोड़ सकते हैं।

@jackslash नोट्स के रूप में, आपको इसे देखने के बाद भी छवि दृश्य के लिए उपयोगकर्ता इंटरैक्शन चालू करने की आवश्यकता है।


मेरा मानना ​​है कि आप इसे इससे अधिक जटिल बना रहे हैं। drawRect: के साथ कस्टम ड्राइंग की कोई आवश्यकता नहीं है। UIImageView उपclassing की कोई आवश्यकता नहीं है (लिंक @ madmik3 संदर्भ आईओएस 4 + के लिए प्रासंगिक नहीं है)। शायद एक वास्तविक UIView उपवर्ग (आप दृश्य नियंत्रक के अंदर यह सब कर सकते हैं) के लिए कोई जरूरत नहीं है, लेकिन यहाँ है कि कैसे आप एक दृश्य के उपवर्ग में कर देगा:

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
    Obj *obj = ... obj has imageHref which is NSString 
    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((self.frame.size.width/2) - (image.size.with/2), (self.frame.size.height/2) - (image.size.height/2), image.size.width, image.size.height)]; 
    imageView.userInteractionEnabled = YES; 
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 
    [imageView addGestureRecognizer:tap]; 

    [self addSubview:imageView]; 
    } 
    return self; 
} 
+0

से पूछ रहा हूं, मैंने अद्यतन प्रश्न शायद यह मदद कर सकता है कि मैं – London

+0

से कहां से पूछ रहा हूं कि आप प्रशंसक भी UIImageView को ओवरराइड करते हैं जैसे http://stackoverflow.com/questions/1848040/detect-touch-on-uiview-with -इंटरफेस-बिल्डर/4494304 # 4494304 – madmik3

+1

@ madmik3 यह सिर्फ छवि छवि के लिए आवश्यक है और इसे क्लिक करने योग्य (वाह) बनाने के लिए आवश्यक है। और मैं आईओएस सीखने के बारे में आशावादी था .. – London

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