एक 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 : संशोधन यदि आप सबव्यू यूजर इंटरैक्शन के साथ समस्या कर रहे हैं।