2012-11-25 13 views
13

मैंने कस्टम यूआईवी व्यू के अंदर एक UIButton डाला है और बटन को कोई स्पर्श ईवेंट नहीं मिल रहा है (यह हाइलाइट किए गए राज्य में नहीं मिलता है, इसलिए मेरी समस्या नहीं है हैंडलर के अंदर एक स्पर्श को तार करने में असमर्थ होने के बारे में)। मैंने इसे इंटरफ़ेस बिल्डर में XIB में डालने की कोशिश की है, और यूआईवी व्यू में प्रोग्रामिंग रूप से UIButton को जोड़ने की कोशिश की है, दोनों भाग्य के साथ समाप्त हो गए हैं। मेरे सभी विचार UIScrollView के अंदर हैं, इसलिए मैंने पहली बार यूआईएसक्रॉलव्यू उन्हें अवरुद्ध कर दिया है, इसलिए मैंने यूआईएसक्रोल व्यू में अपना कस्टम व्यू जोड़ने के साथ ही एक बटन भी प्रोग्राम किया है, और बटन काम करता है, यूआईएसक्रॉल व्यू की संभावना को समाप्त कर सकता है कारण बनो मेरे दृश्य के hiearchy इस तरह है:UIButton स्पर्श घटनाओं का जवाब नहीं देता

ss

बटन छवि दृश्य खत्म हो गया है, और सामने परत पूरी तरह से मेरी बटन पर कब्जा नहीं कर रहा है, इसलिए वहाँ के लिए मुझे शारीरिक रूप से बटन के साथ बातचीत नहीं किया कोई कारण नहीं है। मेरी कस्टम दृश्य के कोड पक्ष में, मैं इस तरह के रूप मेरे विचार बना रहा हूं:

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     UIView *sub = [[[NSBundle mainBundle] loadNibNamed:@"ProfileView" owner:self options:nil] objectAtIndex:0]; 
     [self addSubview:sub]; 
     [sub setUserInteractionEnabled:YES]; 
     [self setUserInteractionEnabled:YES]; 
     CALayer *layer = sub.layer; 
     layer.masksToBounds = YES; 
     layer.borderWidth = 5.0; 
     layer.borderColor = [UIColor whiteColor].CGColor; 
     layer.cornerRadius = 30.0; 
     /*layer.shadowOffset = CGSizeZero; 
     layer.shadowRadius = 20.0; 
     layer.shadowColor = [[UIColor blackColor] CGColor]; 
     layer.shadowOpacity = 0.8; 
     */ 
    } 
    return self; 
} 

मैं setUserInteractionsEnabled के सभी संयोजनों की कोशिश की है, और कोई किस्मत थी। (हां, उन्हें इंटरफ़ेस बिल्डर में भी चेक करने के लिए सेट करें)। मैंने एक और समस्या में एक और समस्या के साथ भी पढ़ा है कि मुझे 'हाँ' लौटने के लिए 'कर सकते हैं फर्स्ट रेस्पॉन्डर' ओवरराइड करने का प्रयास करना चाहिए और मैंने यह भी किया है। लेकिन समस्या बनी रहती है, मैं बटन पर क्लिक नहीं कर सकता। मैंने बटन पर कोई विशेष गुण नहीं दिया है, यह सिर्फ एक नियमित है। दृश्य में मेरी अन्य वस्तुएं (नीचे लेबल, बटन के पीछे छवि दृश्य आदि) समस्याओं के बिना ठीक से काम कर रहे हैं। यहां संभवतः क्या गलत हो सकता है?

धन्यवाद,

कैन।

अद्यतन: चलाने के लिए और बटन क्लिक करने के https://dl.dropbox.com/u/79632924/Test.zip प्रयास करें: यहाँ समस्या की एक त्वरित प्रजनन है।

+0

क्या आप इस दृश्य को छोटे परीक्षण परियोजना में निकालने में सक्षम होंगे? –

+0

बेवकूफ सवाल: क्या आपको बटन को IBAction से लिंक करना याद आया? –

+0

@ हॉटिक्स हां, वे जुड़े हुए हैं। लेकिन समस्या इवेंट हैंडलर को छूने पर फायरिंग के बारे में नहीं है, समस्या बटन को प्राप्त नहीं कर रहा है (या, कम से कम, प्रतिक्रिया देना) बिल्कुल स्पर्श करें। –

उत्तर

18

परीक्षण परियोजना को देखते हुए, मैं टेस्ट व्यू बनाने के तरीके में अपनी समस्या पर विश्वास करें, आप इसके लिए फ्रेम निर्दिष्ट नहीं करते हैं, इसलिए मूल रूप से मूल दृश्य 0 आकार है, और आप देखे गए सबव्यूज XIB से मूल दृश्य से बाहर निकलते हैं और इस प्रकार उत्तरदाता श्रृंखला में कुछ भी नहीं मिलता है ।

आपको या तो TestView बनाते समय फ्रेम निर्दिष्ट करना चाहिए, या XIB फ़ाइल लोड करने के बाद फ्रेम समायोजित करना चाहिए।

+0

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

2

मुझे समाधान मिला है। मैं अपने कस्टम दृश्य आरंभ किया गया था के रूप में:

MyView *view = [[MyView alloc] init]; 

मैं मेरे विचार के आकार के किसी फ्रेम के साथ बजाय इसे प्रारंभ किया है, और यह घटनाओं का जवाब शुरू कर दिया:

CGRect rect = CGRectMake(0,0,width,height); 
MyView *view = [[MyView alloc] initWithFrame:rect]; 
5

मुझे यह समस्या भी मिली है। मेरे लिए कारण यह था कि UIButton पर्यवेक्षण फ्रेम ऊंचाई 0 था, इसलिए मेरा मानना ​​है कि एक स्पर्श होने के बावजूद, यह बटन पर नहीं जा रहा था।

यह सुनिश्चित करने के बाद कि बटन के पर्यवेक्षण ने बटन के कार्यों के फ्रेम के रूप में एक बड़ा आयताकार लिया।

मेरी ओर से इस समस्या का मूल कारण एक दोषपूर्ण ऑटो लेआउट कार्यान्वयन था (मैं बटन के पर्यवेक्षण के लिए ऊंचाई बाधा सेट करना भूल गया था)।

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