2011-09-06 10 views
6

जब उपयोगकर्ता मैन्युअल रूप से मेरे UIScrollView के माध्यम से स्क्रॉल करता है, तो मेरे प्रतिनिधि के scrollViewDidScroll विधि को सामग्री ऑफ़सेट के नए अपडेट किए गए मानों के साथ एनीमेशन के दौरान बार-बार कहा जाता है। जब मैं "[scrollView setContentOffset: 320 एनिमेटेड: हाँ" कहता हूं, तो प्रतिनिधि विधि को उसी तरह से कॉल किया जाता है। मैंने निर्णय लिया कि सामान्य स्क्रॉल गति उपयोगकर्ता अनुभव के लिए बहुत तेज़ है, इसलिए "एनिमेटेड विथ अवधि:" ब्लॉक में "[scrollView setContentOffset: 320]" संलग्न है, क्योंकि ऐप्पल UIView क्लास संदर्भ में अनुशंसा करता है।UIScrollView को बनाने के लिए कैसे करें एनिमेशन के दौरान scrollViewDidScroll संदेश

लेकिन ... अब मेरे scrollViewDidScroll विधि केवल एक बार अंतिम मूल्य के साथ एनीमेशन की शुरुआत में एनीमेशन के दौरान अब और नहीं कहा जाता है, और। जब मैं पुरानी "startAnimations:" विधियों का उपयोग करता हूं तो मुझे वही प्रभाव मिलता है।

तो ... कोई भी इसे हल करने के बारे में जानता है?

वैसे, "setContentOffset" UIScrollView की विधि समान व्यवहार को दर्शाता है। इसे एनिमेशन के दौरान बुलाया जाता था, और अब केवल एक बार कहा जाता है।

उत्तर

6

फिचेक के संकेत के लिए धन्यवाद, मुझे यह काम करने के लिए मिला है। Fichek की तरह कहा, आप एनीमेशन के दौरान परिवर्तित गुणों की कोई अधिसूचना नहीं मिलता है। तो यह चाल यह सुनिश्चित करने के लिए है कि बदले गए संपत्ति पर निर्भर कुछ भी एक ही समय में एनिमेटेड हो। आपको मूल एनिमेशन के समान ब्लॉक में अपने एनिमेशन सेट अप करने की आवश्यकता है। यदि आप एनीमेशन पर "UIViewAnimationOptionAllowUserInteraction" सेट करते हैं, तो उसी गुण के किसी भी चल रहे उपयोगकर्ता इंटरैक्शन अभी भी काम करेगा - और आश्चर्यजनक रूप से, मुझे कहना है।

मेरी ठोस मामले के लिए - एक घसीटा दृश्य स्थिर रखने के लिए है, जबकि नीचे UIScrollView स्क्रॉल - यहाँ कैसे मैं सेटअप मेरी एनीमेशन है:

[UIView animateWithDuration:0.5 delay:0 
        options:UIViewAnimationOptionAllowUserInteraction 
       animations:^{ 
    [theScrollView setContentOffset:offset]; 
    // compute newCenter from the new offset 
    theDraggedView.center = newCenter; 
} completion:^(BOOL finished) {}]; 
+0

यह और अधिक एक समाधान नहीं है। मैं scrollViewDidScroll में स्क्रॉल परिवर्तन के प्रतिनिधि को सूचित करता हूं: जिसे इस विधि से हासिल नहीं किया जा सकता है। इसी प्रकार का प्रश्न यहां पोस्ट किया गया: http://stackoverflow.com/questions/21749950/how-to-properly-animate-uiscrollview-contentoffset – Vlad

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