2010-04-07 13 views
7

मेरे पास एक UIView है जिसमें UIScrollView है और मैं UIView में "टच डाउन" ईवेंट को कैप्चर करने में सक्षम होना चाहता हूं जब भी उपयोगकर्ता UIScrollView पर टैप करता है।UIScrollView के पर्यवेक्षण में "टच डाउन" का पता कैसे लगाएं?

मैंने अपने UIViewController में सभी स्पर्शों को समाप्त/समाप्त/रद्द किए गए हैंडलर को शामिल करने का प्रयास किया है, लेकिन मुख्य UIView में निहित UIScrollView के अंदर टैप करते समय उनमें से कोई भी निकाल दिया नहीं जाता है।

इसे पूरा करने का सबसे अच्छा तरीका क्या है?

उत्तर

2

UIView में, touchesBegan लागू:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    // assign a UITouch object to the current touch 
    UITouch *touch = [[event allTouches] anyObject]; 

    // if the view in which the touch is found is myScrollView 
    // (assuming myScrollView is the UIScrollView and is a subview of the UIView) 
    if ([touch view] == myScrollView) { 
     // do stuff here 
    } 
} 

एक ओर टिप्पणी: सुनिश्चित करें userInteractionEnabled UIView में हाँ पर सेट है।

+0

की रक्षा करना और, मेरी आत्म प्रति जवाब, उपयोगकर्ता बनाने userInteractionEnabled = स्क्रॉलव्यू – wgpubs

+3

के लिए यह यूस्कोलव्यूव के उद्देश्य को हरा देता है क्योंकि हमें "यहां सामग्रीएं" के तहत स्क्रॉलिंग ऑपरेशन को लागू करना है। –

-2

आप इस तरह के रूप में पुस्तक को देखने के साथ उपयोगकर्ता बातचीत निष्क्रिय करने के लिए ...

scrollView.userInteractionEnabled = NO; 

अक्षम करने के बाद, UIScrollView के superview touchesBegan घटना हो जाता है की जरूरत है।

+1

यह पहली जगह स्क्रॉल दृश्य रखने के उद्देश्य को हरा देता है। – Zorayr

1

आप अपने UIView सबक्लास में hitTest:withEvent: भी कार्यान्वित कर सकते हैं। इस विधि को यह निर्धारित करने के लिए बुलाया जाता है कि कौन सा सबव्यूव स्पर्श ईवेंट प्राप्त करना चाहिए। तो यहां आप या तो अपने दृश्य से गुज़रने वाली सभी घटनाओं को ट्रैक कर सकते हैं या सबव्यूज़ से कुछ घटनाओं को छिपा सकते हैं। इस मामले में आपको अपने स्क्रॉलव्यू के लिए उपयोगकर्ता इंटरैक्शन को अक्षम करने की आवश्यकता नहीं हो सकती है।

UIView कक्षा संदर्भ में इस विधि पर अधिक जानकारी देखें।

1

आप अपने पर्यवेक्षण में एक इशारा पहचानकर्ता भी जोड़ सकते हैं। उदाहरण के लिए एक नल इशारा करता है, तो आप सक्रिय करने की आवश्यकता/बातें स्क्रॉल दृश्य डालने बटन की तरह निष्क्रिय:

self.tap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTap:)] autorelease]; 
tap.numberOfTapsRequired = 1; 

["containerView" addGestureRecognizer:tap]; 

जेस्चर नीचे स्क्रॉल दृश्य बातचीत

+0

tapgesturerecognizer केवल टीएपीएस (टचडाउन + टचअप) का पता लगाता है। तो अब यह है कि हम टचडाउन घटनाओं का पता लगाने के लिए क्या चाहते हैं। –

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