2011-02-03 15 views
26

हैलो मेरे पास एक ओपनग्लू दृश्य है और उस पर मेरे पास एक टैब बार है। मैं स्क्रीन पर विभिन्न 3 डी ऑब्जेक्ट्स टैप करने के लिए एक टैप पहचानकर्ता का उपयोग कर रहा हूं। टैब बार में मेरे पास एक बटन है लेकिन यह काम नहीं करता है क्योंकि टैप पहचानकर्ता इन नल को भी पकड़ता है। मैं इसे कैसे रोकूं? मैं पहले से ही इस की कोशिश की है:आप UITapGestureRecognizer को प्रत्येक टैप को पकड़ने से कैसे रोकते हैं?


- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isKindOfClass:[UIBarButtonItem class]]) return FALSE; 
    return TRUE; 
} 

मुझे लगता है कि मैं किसी भी तरह गलत क्लासेस की तुलना कर रहा हूँ क्योंकि जब मैं डिबग यह हमेशा सच देता है।

+3

अपने अगर बयान वापस कर सकते हैं कभी नहीं झूठी - एक बटन के लिए एक दृश्य नहीं है ... लेकिन आप डिबगर जो टाइप दृश्य आपको अलग नल पदों पर मिलता है में एक ब्रेकपाइंट के माध्यम से जांच कर सकता है। – Axel

+0

ओह..मैंने अभी देखा है कि 'UIBarButtonItem' 'UIView' नहीं है :) धन्यवाद। –

उत्तर

27
 
    if ([touch.view.superview isKindOfClass:[UIToolbar class]]) return FALSE; 

इस तरह मैं इसे काम करने के लिए मिला। पर्यवेक्षण एक UIToolbar है, शायद UIBarButtonIttemis a view सब के बाद।

+0

यह काम करता है जहां इशारा पहचानकर्ता के दृश्य पर हिट परीक्षण विफल रहा। स्पष्ट होने के लिए, मैं एक UITableView के भीतर काम कर रहा था और इशारा के स्थान को '{0, सामग्री ऑफसेट - कुछ कॉन्स्टेंट}' के रूप में रिपोर्ट किया गया था। टच के दृश्य की जांच करना एक अच्छा समाधान है। धन्यवाद। – Justin

32

या आप बस [singleTap setCancelsTouchesInView:NO] कर सकते हैं। उदाहरण:

UITapGestureRecognizer *singleTap = [ 
    [UITapGestureRecognizer alloc] 
    initWithTarget: self 
    action: @selector(yourSelector:) 
]; 
[singleTap setCancelsTouchesInView:NO]; 
[[self view] addGestureRecognizer: singleTap]; 
+1

इंटरफ़ेस बिल्डर में व्यू_ में _Canceled के रूप में भी उपलब्ध है। महान! –

+0

केवल एक चीज जो काम करती है। और एक आकर्षण की तरह, मैं जोड़ सकता हूँ! शेष कोड के साथ कोई गड़बड़ नहीं है। thks! – StinkyCat

+0

ग्रेट उत्तर आपको धन्यवाद! –

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