2008-12-20 26 views
13

में स्क्रॉलिंग कैसे रद्द करें I iPhone पर बड़े आकार (320px से बड़ा) UI बनाने के लिए UIScrollView का उपयोग करें।UIScrollView

मैंने UIScrollView का एक उदाहरण बनाया और इसमें कुछ सबव्यूव जोड़े। समस्या यह है कि मैं केवल स्क्रॉलिंग को सक्षम करना चाहता हूं जब उपयोगकर्ता सबव्यूज़ के बाहर छूता है, जब उपयोगकर्ता उप-दृश्यों को छूता है तो स्क्रॉल स्क्रॉल करना।

मैंने दस्तावेज़ पढ़े और नमूने खोजने की कोशिश की लेकिन मुझे अच्छा संकेत नहीं मिला। यदि आपके पास कोई विचार है, तो कृपया मेरी मदद करें।

+0

@ क्रिस हैन्सन: आपने टैग से आईफोन और यूआईएसक्रॉल व्यू क्यों हटाया? वे सही टैग हैं - कोको-स्पर्श जोड़ा जा सकता है, लेकिन यहां अकेले खड़े नहीं होना चाहिए। – Emil

+0

मैंने उन टैग को हटाया या संपादित नहीं किया :( –

+0

क्योंकि जब मैंने संपादन किया था, तब कक्षाओं के नाम और अनावश्यक जानकारी के साथ टैग स्पेस को प्रदूषित करना अच्छा विचार नहीं था। यह अभी भी नहीं है, मैंने अभी छोड़ दिया है उस बकवास को ठीक करना। –

उत्तर

5

आप UIScrollView के subviews के किसी भी अंदर छूता है पता लगाने के लिए चाहते हैं, आप UIScrollView उपवर्ग और touchesShouldBegin और touchesShouldCancelInContentView तरीकों जो विशेष रूप से इस उद्देश्य के लिए बनाई गई हैं ओवरराइड करने के लिए होगा।

इसके अलावा, उप-दृश्यों में छूने की पहचान करने का कोई तरीका नहीं है क्योंकि UIScrollView सभी स्पर्शों को स्वयं संभालता है और उन्हें अपने सबव्यूव में पास नहीं करता है।

सभी बेहतरीन।

+0

आपके उत्तर के लिए धन्यवाद। मैंने स्पर्शों को ओवरराइड करने की कोशिश की शॉल्डबिन/स्पर्श्स शॉलकैंकेल ... विधियों लेकिन इन तरीकों को कभी नहीं बुलाया गया था। शायद मेरे कोडिंग में कुछ गड़बड़ है लेकिन मैं स्पर्श को ओवरराइड करके स्क्रॉल करना बंद कर सकता हूं बेगिन/स्पर्श/हटाए गए तरीके। धन्यवाद! –

+0

क्या आप इसे UIScrollView पर उप-वर्ग में कर रहे हैं? विधियों को तब ही बुलाया जाएगा। तो आपके UIViewController के बजाय UIView का उपयोग करके इसे देखने के लिए इसे UIScrollView के उप-वर्ग का उपयोग – lostInTransit

+0

हां के रूप में करना चाहिए, मैंने इसे UIScrollView के उप-वर्ग में करने की कोशिश की। मुझे अपने कार्यान्वयन में कुछ समस्या मिली है (केवल छेड़छाड़ करने वाले बाघ ...), इसलिए मैं कारणों को खोजने का प्रयास करता रहता हूं कि क्यों छेड़छाड़ की विधि को कभी नहीं बुलाया गया था। –

35

UIScrollView में scrollEnabled संपत्ति है जो आपको प्रोग्रामिंग को स्क्रॉलिंग अक्षम करने की अनुमति देती है। इसमें एक प्रतिनिधि (UIScrollViewDelegate) भी है जो आपको स्क्रॉलिंग प्रारंभ/समाप्ति जैसी घटनाओं को देखने की अनुमति देता है। ऐसा लगता है कि आप किसी भी तरह से उन विकल्पों के साथ कुछ पका सकते हैं।

+0

आपके उत्तर के लिए धन्यवाद। मैं अब आपके समाधान का प्रयास करूंगा। –

+0

यह सबसे अच्छा समाधान है, @ स्टीफन: आप अच्छे हैं :) – hungbm06

+2

अच्छा जवाब, अस्पष्ट लेकिन शुरू करने के लिए पर्याप्त है। +1 –

2

आप यूआईएसक्रॉल व्यू कंट्रोलर को भी सब्सक्रास कर सकते हैं और स्पर्शों को ओवरराइड कर सकते हैं, स्पर्श, छूटे हुए और स्पर्श किए गए तरीके। यदि आपका कार्यान्वयन सुपरक्लास कार्यान्वयन को कभी नहीं बुलाता है, तो यह स्क्रॉल नहीं करेगा।

+0

आपके उत्तर के लिए धन्यवाद। मैंने आपके सुझाव की कोशिश की और यह काम किया !! –

4

स्क्रॉलव्यू के लिए यह delayContentTouchesNO पर सेट करने का सबसे आसान तरीका है। इस तरह डिफ़ॉल्ट व्यवहार सेट किया जाता है ताकि यूआईसींट्रोल जो भी हो, वह तुरंत नियंत्रण पर छूएगा और बाकी सब कुछ स्क्रॉल करेगा।

+2

हटा देता है यदि यह कोई सेट नहीं है तो व्यवहार ओपी चाहता है के विपरीत है। यदि यह हाँ पर सेट है, तो यह बहुत बेहतर नहीं है :) –

5

वह संपत्ति जिसकी आप वास्तव में रूचि रखते हैं - और मैं वास्तव में इसका परीक्षण कर रहा हूं, क्योंकि मुझे वही समस्या है - canCancelContentTouches है।

यदि यह संपत्ति के मूल्य नहीं है, सीधे स्क्रॉल दृश्य उंगली आंदोलन की परवाह किए बिना स्क्रॉल नहीं होता एक बार सामग्री दृश्य ट्रैकिंग शुरू होता है।

यदि यह आप इच्छित परिणाम, उपवर्ग UIScrollView देने के लिए और हावी नहीं होता touchesShouldBegin:withEvent:inContentView विधि है, जो है क्या स्वीकार किए जाते हैं जवाब पता चलता है।