एक UIScrollView
सक्षम पेजिंग के साथ अपने फ्रेम चौड़ाई (या ऊंचाई) के गुणकों में बंद हो जाएगा। इसलिए पहला कदम यह पता लगाना है कि आप अपने पृष्ठों को कितना चौड़ा करना चाहते हैं। की चौड़ाई बनाओ UIScrollView
। फिर, अपने सबव्यू के साइज़ को बड़े करें, लेकिन आपको उनकी ज़रूरत है, और उनके केंद्रों को UIScrollView
चौड़ाई के गुणकों के आधार पर सेट करें ।
फिर, जब से आप अन्य पृष्ठों को देखना चाहते हैं, निश्चित रूप से, जैसा कि कहा clipsToBounds
गया है NO
कि mhjoy सेट करें । चाल हिस्सा अब यह स्क्रॉल करने के लिए हो रहा है जब उपयोगकर्ता खींचें की सीमा के बाहर खींचना शुरू करता है UIScrollView
। मेरा समाधान (जब मुझे यह हाल ही में करना था) इस प्रकार था:
एक UIView
उपवर्ग (यानी ClipView
) बनाएँ, जिसमें सम्मिलित होगा UIScrollView
और यह सबव्यू है। अनिवार्य रूप से, इसमें वह फ्रेम होना चाहिए जो आप मानेंगे कि UIScrollView
सामान्य परिस्थितियों में होगा। UIScrollView
के केंद्र में रखें ClipView
। सुनिश्चित करें ClipView
की clipsToBounds
करने के लिए सेट कर दिया जाता YES
है, तो इसकी चौड़ाई अपनी मूल दृश्य की तुलना में कम है। इसके अलावा, ClipView
एक संदर्भ की जरूरत है UIScrollView
।
अंतिम चरण के - (UIView *)hitTest:withEvent:
अंदर ओवरराइड करना है ClipView
।
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return [self pointInside:point withEvent:event] ? scrollView : nil;
}
यह मूल रूप UIScrollView
से अपने माता-पिता के दृष्टिकोण के फ्रेम के स्पर्श क्षेत्र का विस्तार करता है , वास्तव में आपको क्या चाहिए।
एक अन्य विकल्प UIScrollView
इसकी - (BOOL)pointInside:(CGPoint) point withEvent:(UIEvent *) event
विधि को उप-वर्ग और ओवरराइड करना होगा , हालांकि क्लिपिंग को करने के लिए आपको अभी भी एक कंटेनर दृश्य की आवश्यकता होगी, और यह निर्धारित करना मुश्किल हो सकता है कि YES
केवल UIScrollView
'फ्रेम' के आधार पर कब लौटना है ।
नोट: आपको Juri Pakaste के हिटटेस्ट पर भी एक नज़र डालनी चाहिए : withEvent : संशोधन यदि आप सबव्यू यूजर इंटरैक्शन के साथ समस्या कर रहे हैं।