2012-04-01 16 views
7

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

[UIView animateWithDuration:4.5 
         delay:0 
        options:options 
       animations:^{ 
        oldView.alpha = 0; 
        newView.alpha = 1; 
       } 
       completion:^(BOOL finished) { 
        if (finished) { 
         [oldView removeFromSuperview]; 
        } 
       }]; 

जैसा कि आप देख सकते अवधि लंबी है तो यह स्पष्ट रूप से दिखाई है कि UI सहभागिता करते हुए एनिमेट ब्लॉक किए गए हैं।

एनीमेशन शुरू होने पर यूआई इंटरैक्शन अवरुद्ध होने लगते हैं, और एनीमेशन समाप्त होने पर अवरुद्ध होने के लिए समाप्त होता है।

क्या UIView एनीमेशन को एक साथ शुरू करने का कोई तरीका है ताकि UI इंटरैक्शन अवरुद्ध न हों?

संपादित स्पष्ट करने के लिए: मुझे पता है कि यूआई अवरुद्ध है क्योंकि मैं के साथ स्क्रीन क्यों इस एनीमेशन चल रहा है पर किसी भी नियंत्रण बातचीत नहीं कर सकते हैं। उन अन्य नियंत्रण एनिमेटेड होने से संबंधित नहीं हैं और दृश्य पदानुक्रम में एक ही शाखा पर नहीं हैं। जब यह एनीमेशन चलता है तो पूरा यूआई अवरुद्ध हो जाता है। जब मैं इसे 10 सेकंड पर सेट करता हूं, तो एनीमेशन चलने पर यूआई को 10 सेकेंड तक अवरुद्ध कर दिया जाता है। एनिमेशन: iPhone पर आईओएस 4.2 के साथ परीक्षण किया 4.

+0

आप कैसे जानते हैं कि यह अवरुद्ध है? जब तक किसी दृश्य में शून्य का अल्फा नहीं होता है, तब तक इसके पीछे के सभी विचारों पर इंटरैक्शन अक्षम होता है। – CodaFi

+0

स्पष्टीकरण के साथ प्रश्न अद्यतन किया गया। –

उत्तर

18

UIView के लिए दस्तावेज़ को देखते हुए, मुझे लगता है कि विधि के लिए चर्चा अनुभाग में इस पाया:

एक एनीमेशन के दौरान, उपयोगकर्ता बातचीत अस्थायी रूप से देखा गया एनिमेटेड होने के कारण अक्षम कर रहे हैं। (आईओएस 5 से पहले, पूरे एप्लिकेशन के लिए उपयोगकर्ता इंटरैक्शन अक्षम कर दिए जाते हैं।) यदि आप चाहते हैं कि उपयोगकर्ता विचारों के साथ बातचीत करने में सक्षम हों, तो विकल्प पैरामीटर में UIViewAnimationOptionAllowUserInteraction निरंतर शामिल करें।

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

5

प्रलेखन अपने दोस्त :)

UIView Class Reference

तहत animateWithDuration है

"एक एनीमेशन के दौरान, उपयोगकर्ता बातचीत अस्थायी रूप से अक्षम हैं विचार एनिमेटेड हैं। (आईओएस 5 से पहले, पूरे एप्लिकेशन के लिए उपयोगकर्ता इंटरैक्शन अक्षम हैं।) "

और निश्चित रूप से, सभी v के लिए एनिमेटेड व्यू के तहत दृश्य।

+1

मैं इसे कैसे याद कर सकता था !!! पवित्र गाय। मुझे बड़े चश्मे की जरूरत है। धन्यवाद। –

+0

'UIViewAnimationOptionAllowUserInteraction' के साथ jmstone की विधि आज़माएं - उम्मीद है कि यह चाल है :) –

+1

यह पूरी तरह से चाल है। मेरे साल बचाया महान। –