UIView

2012-02-19 22 views
9

के हिस्से के लिए UIGestureRecognizer मैं अपने आईओएस एप्लिकेशन में UIGestureRecognizer का उपयोग कर रहा हूं और मुझे कुछ समस्याएं हैं।UIView

मैं केवल दृश्य के एक निश्चित क्षेत्र में इशारा करना चाहता हूं, इसलिए मैंने एक विशिष्ट फ्रेम के साथ एक नया UIView बनाया और इसे मूल दृश्य में जोड़ा। इशारा इस के साथ ठीक काम कर रहे हैं, लेकिन अब एकमात्र मुद्दा यह है कि मैं उस नए दृश्य (मूल दृश्य पर मौजूद वस्तुओं) के नीचे/पीछे की सामग्री को क्लिक नहीं कर सकता। यदि मैं userInteraction को सक्षम नहीं करता हूं, तो यह इशारों को तोड़ देता है ताकि यह कोई विकल्प न हो।

इसे ठीक करने के लिए मैं क्या कर सकता हूं?

धन्यवाद।

उत्तर

31

अपने इशारा पहचानकर्ता के लिए एक नया दृश्य न बनाएं। पहचानकर्ता एक स्थान लागू करता है IView: विधि। इसे संवेदनशील क्षेत्र में देखने के लिए सेट अप करें। हैंडल पर, उस क्षेत्र को हिट-टेस्ट करें जिसकी आप परवाह करते हैं:

0) यह सब उस दृश्य में करें जिसमें उस क्षेत्र को शामिल किया गया है जिसमें आप परवाह है। इशारा पहचानकर्ता के लिए केवल एक विशेष दृश्य न जोड़ें।

1) सेटअप mySensitiveRect

@property (assign, nonatomic) CGRect mySensitiveRect; 
@synthesize mySensitiveRect=_mySensitiveRect; 
self.mySensitiveRect = CGRectMake(0.0, 240.0, 320.0, 240.0); 

2) अपने gestureRecognizer बनाएँ:

gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)]; 
[self.view addGestureRecognizer:gr]; 
// if not using ARC, you should [gr release]; 
// mySensitiveRect coords are in the coordinate system of self.view 


- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer { 
    CGPoint p = [gestureRecognizer locationInView:self.view]; 
    if (CGRectContainsPoint(mySensitiveRect, p)) { 
     NSLog(@"got a tap in the region i care about"); 
    } else { 
     NSLog(@"got a tap, but not where i need it"); 
    } 
} 

संवेदनशील रेक्ट MyView के समन्वय प्रणाली में प्रारंभ किया जाना चाहिए, एक ही दृश्य है जो आप पहचानकर्ता संलग्न करने के लिए।

+0

क्षमा करें, लेकिन यह क्या करेगा? और mySensitiveRect चर के लिए, क्या मैं (0, 0, 320, 480) का उपयोग करता हूं? क्या आपके पास एक पूर्ण उदाहरण है? धन्यवाद: डी –

+0

@ डेविडमुरे: उम्मीद है कि यह स्पष्ट है – danh

+0

धन्यवाद, जिसने इसे बनाया है। :-) –