2011-03-20 15 views
7

मेरे पास UIViewController का UIScrollView ऑनटॉप है, जब आप किसी स्पॉट के पृष्ठ पर हों तो Gowalla iPhone ऐप में प्रभाव डालें। मेरे स्क्रोल व्यू के तहत मेरे पास एक बटन है जिसे मैं स्क्रॉल व्यू के फ्रेम को कवर करता हूं (जहां यह बटन की ऑनटॉप है, स्क्रॉल व्यू साफ़ है), जब भी मैं इसे क्रियान्वित करने में सक्षम होना चाहता हूं। मैं ऐसा कुछ कैसे करूं? क्या यह संभव है? (यह होना चाहिए, गोवाल्ला [किसी भी तरह] इसे किया)स्पर्शों का पता लगाने के लिए UIScrollView के तहत UIView कैसे प्राप्त करें?

उत्तर

0

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

यदि आपके इंटरफ़ेस को खराब किए बिना स्क्रॉल व्यू के पूरे contentSize क्षेत्र को भरने के लिए स्क्रॉल व्यू के पीछे आपका बटन आकार दिया जा सकता है, तो सबसे आसान समाधान केवल इसे स्क्रॉल व्यू के अंदर रखना होगा (अन्य सभी विचारों के तहत) और बस यही करो।

अन्यथा, आपकी सबसे अच्छी शर्त शायद ऊपर के रूप में स्क्रॉल व्यू में रखने के लिए एक स्पष्ट पृष्ठभूमि के साथ एक कस्टम दृश्य बनाने के लिए है। आसान समाधान कस्टम दृश्य (शायद एक यूआईसींट्रोल) होना है जो बटन को छूने वाले कुछ भी करता है। यदि किसी कारण से यह संभव नहीं है, तो अंतर्निहित बटन वापस करने के लिए कस्टम दृश्य पर hitTest:withEvent: को ओवरराइड करना आपका सबसे अच्छा विकल्प होगा। मैं स्क्रॉल व्यू पर hitTest:withEvent: ओवरराइड करने से सावधान रहूंगा, क्योंकि यह स्क्रॉलिंग में हस्तक्षेप कर सकता है।

0

स्क्रॉल व्यू के शीर्ष पर बटन जोड़ने का प्रयास करें। इसके साथ एकमात्र समस्या यह है कि यदि आप बटन दबाते हैं, तो आप scrollView से बातचीत करने में सक्षम नहीं होंगे, लेकिन यह अभी भी दिखाई देगा।

2

मेरे लिए, मैं निम्नलिखित विधियों को ओवरराइड करके स्पर्श ईवेंट को दूसरे दृश्य में स्थानांतरित कर दूंगा।

  • - touchesBegan: withEvent:
  • - touchesMoved: withEvent:
  • - touchesEnded: withEvent:
  • - touchesCancelled: withEvent:

की तरह इस तरह,

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    // pass touch event by default implement. 
    [super touchesBegan:touches withEvent:event]; 

    // redirect the touch events. 
    [anotherView touchesBegain:touches withEvent:event];  
} 

hitTest: withEvent: तय करने के लिए प्रयोग किया जाता है जो दिखाई देने वाले दृश्य पदानुक्रम पेड़ पर प्रतिक्रिया स्पर्श घटना चाहिए। यदि दृश्य स्पर्श घटना का जवाब नहीं देना चाहता है, तो यह हिटटेस्ट में शून्य वापस आ जाएगा। नतीजतन उपर्युक्त स्पर्श घटना विधियों को नहीं कहा जाएगा।

+0

यह एक अच्छा जवाब है। मैं इसकी सराहना करता हूं। –