2010-12-16 14 views
13

मुझे UIPanGestureRecognizer के साथ एक छोटी सी समस्या है। पहचानकर्ता UIGestureRecognizerStateEnded राज्य रिपोर्ट नहीं करता है, तो उपयोगकर्ता शीर्ष बाईं ओर आलोचनाUIPanGestureRecognizer राज्य "अंत" या "रद्द करें" पर स्विच नहीं करता है यदि उपयोगकर्ता ने नकारात्मक दिशा में x और y को प्रतिबंधित किया है

UIGestureRecognizerStateEnded करने के लिए राज्य में परिवर्तन करता है, तो किसी भी दिशा सकारात्मक है जब उपयोगकर्ता अपनी उंगली लिफ्टों, लेकिन (नकारात्मक x और y दिशाओं का मतलब है) यदि दोनों दिशाएं ऋणात्मक या शून्य हैं तो यह केवल कार्रवाइयों की रिपोर्ट करना बंद कर देता है।

यह खराब है क्योंकि जब तक उपयोगकर्ता कुछ ड्रैग करता है और उन विचार विफलता मामले में वापस नहीं आते हैं, तो मैं कुछ ओवरले दृश्य छुपाता हूं।

बेशक मैं कुछ समय के बाद ओवरले को ओवरले प्रदर्शित करने के लिए एनएसटीमर सेट कर सकता हूं लेकिन मुझे अपने कोड और में कोई स्पष्ट त्रुटि दिखाई नहीं दे रही है।

क्या मुझे कुछ याद आया? क्या यह एक ऐप्पल बग है?

प्रारंभ इस तरह है:

pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRecognized:)]; 
[self addGestureRecognizer:pan]; 
[pan release]; 

हैंडलिंग समारोह इस तरह दिखता है:

- (void)panRecognized:(UIPanGestureRecognizer *)gestureRecognizer { 
    switch ([gestureRecognizer state]) { 
     case UIGestureRecognizerStateBegan: 
      // fade some overlaying views out 
      break; 
     case UIGestureRecognizerStateEnded: 
     case UIGestureRecognizerStateCancelled: 
     case UIGestureRecognizerStateFailed: 
      // fade in the overlays 
      break; 
     default: 
      break; 
    } 

    // handle panning 
} 
+3

यह मेरे साथ पहले हुआ है जब मैंने गलती से इशारा पहचानकर्ता को एक अलग दृश्य में हटा दिया/स्थानांतरित कर दिया। जैसे ही आप करते हैं, यह चुप हो जाएगा। यह आपके मामले में मामला नहीं है? – Kalle

+0

यह सुनिश्चित नहीं है कि वास्तव में क्या हो रहा है, लेकिन बातचीत के दौरान क्या हो रहा है यह देखने के लिए सभी संभावित UIGestureRecognizerStates के लिए लेखांकन द्वारा राज्य परिवर्तन लॉगिंग करने का प्रयास करें –

+0

मेरे साथ भी हुआ। मेरे वीसी के 'viewDidLayoutSubviews' से' viewVillAppear' 'पर' uiview.addGestureRecognizer 'को स्थानांतरित करने से हल किया गया है, अभी भी एक औचित्य की तलाश है। – Jokester

उत्तर

0

लाइन

[आत्म addGestureRecognizer: पैन];

मुझे गलत लगता है।

ऐसा लगता है कि आप एक UIView के अंदर से इशारा पहचानकर्ता बना रहे हैं और UIViewController नहीं। तो यदि दृश्य दोनों को हटा देता है और इशारा पहचानकर्ता गायब हो जाएगा।

UIViewController से इशारा पहचानकर्ता बनाने के लिए बेहतर। इसके अलावा UIViewController को पहचानकर्ता को एक मजबूत बिंदु रखने की जरूरत है।