2012-12-13 38 views
7

में मेरे पास एक प्रोजेक्ट था जिसमें एक्सकोड 4.5 और स्टोरीबोर्ड और एआरसी का उपयोग करके बहुत सारे UIButton शामिल हैं। आईओएस 6 में परीक्षण के बाद, सब कुछ ठीक हो जाता है। लेकिन आईओएस 5 में, UIButton घटना के अंदर स्पर्श नहीं कर रहा है, कार्रवाई नहीं कहा जाता है। मैंने टच डाउन का उपयोग करने की कोशिश की और यह काम करता है। हालांकि, मेरे पास बहुत सारे UIButton हैं, मैं इसे एक-एक करके नहीं बदल सकता। और क्या है, टच डाउन इवेंट एक अच्छा अनुभव देता है। viewDidLoad में :UIButton आईओएस 5 में काम नहीं कर रहा है, जबकि आईओएस 5 में काम नहीं कर रहा है, जबकि यह ठीक है IOS6

मैं मेरे विचार नियंत्रक के कई में नीचे दिए गए कोड का इस्तेमाल किया

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

[self.view addGestureRecognizer:tap]; 

-(void)dismissKeyboard { 
     [aTextField resignFirstResponder]; 
} 

इस कारण हो सकता है। मैं बाद में इसे देख लूंगा। लेकिन यह आईओएस 6 में काम करता है। क्या आप जानते हैं कि क्या गलत है? बहुत बहुत धन्यवाद!

उत्तर

16

मुझे आपके लिए एक ही समस्या थी। ऐसा इसलिए है क्योंकि आईओएस 5 में टच इवेंट रोका जाता है जब आपके द्वारा पंजीकृत जेस्चर रिकॉग्नाइज़र घटना को कैप्चर करता है।

दो समाधान हैं।

एक:

1) अपने दृश्य के अंदर एक नया दृश्य जोड़ें। यह बटन के लिए एक ही स्तर होना चाहिए। बटन की प्राथमिकता नए दृश्य से अधिक होनी चाहिए।

2) नए व्यू में 'addGestureRecognizer' के कॉल को बदलें।

[self.newView addGestureRecognizer:tap]; 

दो:

1) नीचे दिए गए कोड को लागू करें। जब बटन बटन में होता है तो आपको NO वापस नहीं करना चाहिए।

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 
{ 
    CGPoint point = [gestureRecognizer locationInView:self.view]; 

    NSLog(@"x = %.0f, y = %.0f", point.x, point.y); 
    if (CGRectContainsPoint(self.testBtn.layer.frame, point)) 
     return NO; 

    return YES; 
} 

ps। आपको परत के गुणों तक पहुंचने के लिए QuartzCore.h आयात करना चाहिए।

#import <QuartzCore/QuartzCore.h> 
+0

समाधान के लिए धन्यवाद! इससे बहुत मदद मिली –

5

बस UITapGestureRecognizer पर संपत्ति "cancelsTouchesInView" का उपयोग (NO) नल

उदाहरण:

UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap)]; 
gesture.cancelsTouchesInView = NO; 
[self.view addGestureRecognizer:gesture]; 
+1

+1। –

+0

@JarnoV मैं इसे Xamarin IOS से कैसे कर सकता हूं? –

+0

@ JorgeWanderSantanaUreña, मैं Xamarin के साथ कोई अनुभव नहीं है .. क्षमा करें;) – JarnoV

0

अपने बटन जनक दृश्य pointinside विधि ओवरराइड, एक नए कस्टम फ्रेम आकार होता है कि स्थापना के अपने बटन।