आईओएस पर 7. मेरे पास नेविगेशन नियंत्रक है और मैं स्टैक के शीर्ष पर एक नया वीसी दबाता हूं।_adjustContentOffsetIfNecessary - UIScrollView स्वचालित रूप से शीर्ष पर स्क्रॉल करता है
उस नए वीसी में एक यूआईएसक्रोल व्यू है जो वीसी के मूल दृश्य को भरता है और लंबवत स्क्रॉल करता है। यदि मैं थोड़ा सा स्क्रॉल करता हूं और फिर 'वापस जाने के लिए स्वाइप करें'/'पॉप पर स्वाइप करें' का उपयोग करने का प्रयास करता हूं, तो वर्टिकल स्क्रॉल व्यू पहले शीर्ष पर स्क्रॉल करता है, और फिर इंटरैक्टिवपॉपगेचर पहचाना जाता है और मैं शीर्ष VC को खींच सकता हूं बाएं और दाएं ढेर।
ऐसा क्यों होता है? मैं अपने स्क्रॉल व्यू को 'वापस जाने के लिए स्वाइप करें' संकेत से पहले शीर्ष पर स्क्रॉल करने से रोकना चाहता हूं। मैं यह कैसे कर सकता हूं?
अद्यतन # 1:
मैं जब मैं एक ताजा xcode प्रोजेक्ट बनाने के इस बग पुन: पेश नहीं कर पा रहे, तो यह सबसे निश्चित रूप से मूल परियोजना में अपनी ओर से त्रुटि है। जब मुझे कारण मिल जाए तो अपडेट हो जाएगा।
अद्यतन # 2:
जब interactivePopGesture मान्यता प्राप्त हो जाता है, setContentOffset
विधि मेरी लंबवत स्क्रॉल दृश्य पर कहा जाता है। डीबगिंग करते समय, मुझे लगता है कि setContentOffset
को UIScrollViewInternal _adjustContentOffsetIfNecessary
से बुलाया गया था।
अद्यतन # 3:
एक ही समस्या एक इस परिदृश्य में क्या होता है: मैं एक ऊर्ध्वाधर UIScrollView अंदर UITextFields है। जब एक निश्चित UITextField दबाया जाता है, तो एक कीबोर्ड दिखाई देता है। जब मैं ड्रैग को छोड़ने के बाद कीबोर्ड को इंटरैक्टिव रूप से (कीबोर्ड पर स्क्रॉल व्यू पर खींचकर) को खारिज करना चाहता हूं, तो एक गड़बड़ होती है। UIScrollView की सामग्री ऑफसेट को क्षणिक रूप से शून्य पर सेट कर दिया गया है, और फिर मूल सामग्री ऑफ़सेट पर वापस सेट किया गया है और एनीमेशन के साथ आगे बढ़ेगा। contentOffset
की यह अवांछित सेटिंग भी UIScrollViewInternal _adjustContentOffsetIfNecessary
द्वारा आविष्कार की गई है।
मैं आगे बढ़ गया और UIScrollView के अपने उप-वर्ग के साथ दोनों परिदृश्यों में UIScrollView को प्रतिस्थापित कर दिया। उस सबक्लास में मैंने एक खाली विधि विधि के रूप में एक निजी विधि -(void) _adjustContentOffsetIfNecessary
को ओवरराइड किया। मेरी दोनों समस्याओं को समाप्त कर दिया गया, और मुझे कोई नकारात्मक नतीजा नहीं मिला। यह कोई समाधान नहीं है और मैं इस दृष्टिकोण का उपयोग नहीं करूंगा, क्योंकि मुझे नहीं पता कि मैंने वास्तव में क्या किया है।
UIViewController के सेट से संबंधित कुछ हो सकता है स्वचालित रूप से IOS7 –
पर स्वचालित रूप से समायोजित करें IcjustjustScrollViewInsets = NO; प्रत्येक दृश्य नियंत्रक पर मैंने सोचा कि स्थिति के लिए प्रासंगिक हो सकता है। यह मदद नहीं करता है। – ancajic
मैं इस समस्या से भी मुलाकात की। मैन्युअल रूप से कंटेंट ऑफसेट को सेट करें (0, -64), लेकिन _adjustContentOffsetIfNecessary ने इसे -108 में बदल दिया है। उलझन में। किसी भी अद्यतन? – Wingzero