2010-09-17 12 views
10

आईफोन या आईपैड पर ऐप स्टोर ऐप को देखें, खासकर स्क्रीनशॉट दिखाते हुए ऐप विवरण की स्क्रीन पर टुकड़ा। स्क्रीनशॉट दर्शक आपको वह स्क्रीनशॉट दिखाता है जिसे आप देख रहे हैं, और अगले और पिछले के किनारों को दिखाता है। मुझे ऐसा कुछ लागू करने की ज़रूरत है।पेजिंग UIScrollView पड़ोसी पृष्ठों को देखकर

मैंने यह कैसे किया है यह गरीबों के लिए उचित है: मैंने एक UIScrollView और सक्षम पेजिंग बनाया और मेरी सामग्री डाली। मैंने फ्रेम को सामग्री के एक पृष्ठ के समान आकार दिया है, लेकिन स्क्रीन से छोटा है। तब मैंने clipToBounds अक्षम कर दिया, इसलिए स्क्रॉलव्यू के फ्रेम के बाहर जो कुछ भी है, वह अभी भी खींचा जाता है। अब मैं आसन्न पृष्ठों के किनारों को देख सकता हूं, लेकिन वे स्क्रॉल व्यू के बाहर हैं और इसलिए स्क्रॉल स्पर्श प्राप्त नहीं कर सकते हैं। ऐप स्टोर ऐप आपको उस चीज़ की पूरी चौड़ाई को स्पर्श करने देता है, जिसमें पड़ोसी पृष्ठों के आकर्षक किनारे शामिल हैं।

तो उन्होंने ऐसा कैसे किया?

उत्तर

17

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

- (UIView *) hitTest: (CGPoint) pt withEvent: (UIEvent *) event { 
    if (CGRectContainsPoint(self.bounds, pt)) return self.scrollView; 
    return [super hitTest: pt withEvent: event]; 
} 
+0

मुझे विश्वास नहीं है कि यह इतना आसान है! इससे पहले कि मैं इसे आजमा सकूं (मेरे ग्राहक के हिस्से पर खराब योजना वास्तव में मेरे हिस्से पर एक आपात स्थिति बनती है, यह पता चला है), लेकिन मैं आपको वैसे भी चेक दूंगा। चीयर्स! –

+0

इस उत्तर के लिए बहुत बहुत धन्यवाद, बेन! यह वास्तव में महान काम करता है। –

+3

मैंने ऊपर दिए गए समाधान की भी कोशिश की लेकिन यह पता चला कि स्क्रॉल व्यू के भीतर आइटम स्वयं स्पर्श कार्यक्रम नहीं प्राप्त करते हैं - केवल स्क्रॉलव्यू करता है। क्या यह अपेक्षित व्यवहार है? –

0

मत भूलना scrollview subviews को छूता अग्रेषित करने के लिए आप अपनी सामग्री सीमा के बाहर इंटरैक्टिव रहना चाहते हैं: तुम सब करने की ज़रूरत है इस समर्थन को देखने के भीतर किसी भी अंक के लिए अपने स्क्रॉल दृश्य वापसी है।

यदि आप अपनी स्क्रॉलव्यू सामग्री को एक अतिरिक्त कंटेनर में डाल चुके हैं तो निम्न उदाहरण सत्य है। यदि यह मामला नहीं है, तो उप-दृश्यों पर लूप और उस व्यक्ति को वापस लौटाएं जो आपके स्पर्श से हिट हो जाता है।

- (UIView*)hitTest:(CGPoint)pt withEvent:(UIEvent*)event 
{ 
    UIView *contentView = [self.subviews count] ? [self.subviews objectAtIndex:0] : nil; 
    return [contentView hitTest:pt withEvent:event]; 
} 
+1

मैंने कोशिश की लेकिन यूआईएसक्रोल व्यू की सबसे गर्म विधि कभी नहीं बुलाई गई। आप अपना दृश्य पदानुक्रम कैसे कर रहे हैं? – htafoya

1

मैं एक पर्याप्त उच्च ऊपर जवाब पर टिप्पणी करने से रैंकिंग की जरूरत नहीं है, लेकिन आप रे Wenderlich की साइट पर एक ट्यूटोरियल और नमूना कोड पा सकते हैं: How To Use UIScrollView to Scroll and Zoom Content

इस कोड को ऊपर सूचीबद्ध तकनीक का उपयोग करता है, विशेष रूप से हिट टेस्ट तर्क।

संबंधित मुद्दे