2011-10-27 13 views
9

मैं UIImageView पर प्रदर्शित करने के लिए UIButton बनाना चाहता हूं। मेरे कोड स्निपेट के रूप में नीचे दिखाया गया है:UIImageView पर क्लिक करने योग्य UIButton कैसे बनाएं?

imageView = [[UIImageView alloc] initWithImage:image]; //initWithImage:image 

imageView.userInteractionEnabled = YES; //to enable touch interaction with image 



UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[btn setTitle:@"ClickMe" forState:UIControlStateNormal]; 
[btn.titleLabel setFont:[UIFont systemFontOfSize:16]]; 


btn.frame = CGRectMake(340, 550, 70, 50); 

[btn addTarget:self action:@selector(onClickHotSpotButton) forControlEvents:UIControlEventTouchUpInside]; //it wasnt working 


[imageView addSubview:btn]; 
[self addSubview:imageView]; 

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

अग्रिम धन्यवाद।

wahib

उत्तर

0

यदि यह क्लिक करने योग्य छवि है तो मैं छवि पर छवि पसंद करता हूं।

UIButton *sampleButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[sampleButton setFrame:CGRectMake(kLeftMargin, 10, self.view.bounds.size.width - kLeftMargin -  kRightMargin, 52)]; 
[sampleButton setTitle:@"Button Title" forState:UIControlStateNormal]; 
[sampleButton setFont:[UIFont boldSystemFontOfSize:20]]; 
[sampleButton setBackgroundImage:[[UIImage imageNamed:@"redButton.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal]; 
[sampleButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:sampleButton]; 
+0

आपकी प्रतिक्रिया के लिए धन्यवाद। चाहे वह एक छवि बटन है या इससे कोई फर्क नहीं पड़ता। मैं चाहता हूं कि इसे क्लिक करने योग्य बनाएं। मेरे पास अब दो विकल्प हैं। चाहे मैं अपना बटन ImageView या ScrollView का सबव्यूव करता हूं जो ImageView के माता-पिता हैं। यदि मैं स्क्रॉलव्यू के बटन सबव्यूव जैसे [self addSubView: btn] बना देता हूं; यह सही स्थिति पर प्रदर्शित होता है और क्लिक करने योग्य है लेकिन समस्या यह है कि यह कतार में सभी छवियों पर बनाई गई है क्योंकि मैं इसे मूल दृश्य i.e scrollview का सबव्यूव बना रहा हूं। अन्यथा अगर मैं इसे बाल दृश्य का सबव्यूव बना देता हूं iee ImageView जो प्रत्येक छवि के लिए अद्वितीय है, यह क्लिक करने योग्य नहीं है:/ –

3

तुम बस एक बटन का उपयोग करें और कह सकते हैं:

[UIButton setImage:[imageNamed:@"image.png"]]; 
+0

आपका समाधान सबसे सुरुचिपूर्ण – nurxyz

0

मैं अपने ऐप्स में से एक में कुछ इस तरह से किया था। मैंने एक xib फ़ाइल बनाई जिसमें छवियों की श्रृंखला शामिल थी, प्रत्येक शीर्ष पर खींचे गए बटन के साथ। मैंने उनको क्लास फ़ाइल में संबंधित आउटलेट से जोड़ा। मैं तो बाहर काम किया जो का उपयोग कर touchesBegan में क्लिक किया गया था:

if(CGRectContainsPoint(btnFirstButton.frame, touchLocation)){ 
    //do something useful 
}else if(CGRectContainsPoint(btnSecondButton.frame, touchLocation)){ 
    //do something useful 
} 

आशा है कि मदद करता है - मेरे लिए काम किया :-)

0

मैं UIImageView पर UIButton दिखाने के लिए कर रहा हूँ और इस अद्यतन कोड है। मैंने नीचे हाल की समस्याओं का उल्लेख किया है।

imageView = [[UIImageView alloc] initWithImage:image]; //initWithImage:image 

//imageView.tag = i; // tag our images for later use when we place them in serial form 
[imageView setContentMode:UIViewContentModeScaleToFill]; //though it has no impact 
imageView.userInteractionEnabled = YES; //to enable touch interaction with image 

[self addSubview:imageView]; 

UIButton *btn = [[UIButton buttonWithType:UIButtonTypeContactAdd] retain]; //Plus icon button 

btn.frame = CGRectMake(215, 550, 100, 100); 
[btn addTarget:self action:@selector(onClickHotSpotButton) forControlEvents:UIControlEventTouchUpInside]; //it wasnt working 

**[self addSubview:btn]; //Buttons are clickable but shows button on all images** 

//[imageView addSubview:btn]; //Buttons are not clickable and are shown on all images 

मेरे पास अब दो विकल्प हैं। चाहे मैं अपना बटन ImageView या ScrollView का सबव्यूव करता हूं जो ImageView के माता-पिता हैं। यदि मैं स्क्रॉलव्यू के बटन सबव्यूव जैसे [self addSubView: btn] बना देता हूं; यह सही स्थिति पर प्रदर्शित होता है और क्लिक करने योग्य है लेकिन समस्या यह है कि यह कतार में सभी छवियों पर बनाई गई है क्योंकि मैं इसे मूल दृश्य i.e scrollview का सबव्यूव बना रहा हूं। अन्यथा अगर मैं इसे बाल दृश्य यानी छवि दृश्य का सबव्यूव बनाता हूं जो कि प्रत्येक छवि के लिए अद्वितीय है, लेकिन फिर भी यह सभी छवियों पर दिखाया गया है और यह क्लिक करने योग्य नहीं है:/

क्या कोई भी मुझे क्लिक करने योग्य बनाने और इसे जोड़ने के तरीके के बारे में मार्गदर्शन कर सकता है गतिशील बटन और छवि अद्वितीय है ताकि मेरे पास कतार में प्रत्येक छवि पर विभिन्न स्थितियों पर अलग-अलग बटन हों।

5

मैं इस कोशिश की और यह मेरे लिए काम करता है .......

UIImageView * imageView = [[UIImageView alloc]init]; 
[imageView setImage:[UIImage imageNamed:@"image.jpeg"]]; 
[imageView setFrame:CGRectMake(10,10,300,300)]; 
[imageView setContentMode:UIViewContentModeScaleToFill]; 
[imageView setUserInteractionEnabled:TRUE]; 

UIButton * ButtonOnImageView = [[UIButton alloc]init]; 
[ButtonOnImageView setFrame:CGRectMake(135,120,60,30)]; 
[ButtonOnImageView setImage:[UIImage imageNamed:@"image.jpeg"] forState:UIControlStateHighlighted]; 
[ButtonOnImageView setImage:[UIImage imageNamed:@"image2.jpeg"] forState:UIControlStateNormal]; 
[ButtonOnImageView addTarget:self action:@selector(OnClickOfTheButton) forControlEvents:UIControlEventTouchUpInside]; 

[imageView addSubview:ButtonOnImageView]; 
[self.view addSubview:imageView]; 
+0

लगता है यदि आप बटन पर छवियां सेट करते हैं तो आप अभी भी UIImageView का उपयोग क्यों करेंगे? – tcurdt

1

आप एक

scrollview का एक उपवर्ग के रूप में बटन जोड़ने की जरूरत है

imageview

.. बटन क्लिक करने योग्य नहीं होगा यदि बटन uiimageview का उप-वर्ग है .. प्रत्येक बटन क्लिक किया बटन पहचान करने के लिए के लिए

आशा एक speacial टैग निर्दिष्ट इस मदद करता है

3
  1. आप के रूप में custom.It आप के लिए काम करेंगे बटन को परिभाषित जोड़ने के लिए।

    UIButton * बटन = [UI बटन बटन WithType: UIButtonTypeCustom];

0

बटन सक्षम करने के उपयोगकर्ता नियंत्रण को सेट करने का प्रयास करें।

[btn setEnabled:YES]; 

Coz UIImageView डिफ़ॉल्ट रूप से अक्षम बटन के उपयोगकर्ता की प्रतिक्रिया सेट करेगा।

अन्यथा आप इसे आजमा सकते हैं। बस अंतिम दो पंक्तियों को बदलें।

बदलें:

[imageView addSubview:btn]; 
[self addSubview:imageView]; 
इस के साथ

:

[self addSubview:imageView]; 
[self addSubview:btn]; 

सुनिश्चित करें कि आप दूसरे imageView पहली और बटन जोड़ने के रूप में मैं उल्लेख किया है सुनिश्चित करें। अन्यथा बटन छविदृश्य के पीछे रखा जाएगा और छुपा लगता है।

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