2011-02-03 20 views
8

मुझे दो उंगली स्पर्श घटना का पता लगाने की आवश्यकता है। अगर मैं एक ही समय में दो अंगुलियों के साथ स्क्रीन को छूता हूं, तो हमेशा कुछ ठीक है। बस इस तरह के कोड का उपयोग कर:आईफोन: दो उंगली स्पर्श का पता लगाएं

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [[touches allObjects] objectAtIndex:0]; 
    CGPoint point1 = [touch locationInView:self]; 
    CGPoint point2 ; 
    NSLog(@"First: %f %f", point1.x, point1.y) ; 
    if ([[touches allObjects] count] > 1) { 
    UITouch *touch2 = [[touches allObjects] objectAtIndex:1]; 
    point2 = [touch2 locationInView:self]; 
    NSLog(@"Second: %f %f", point2.x, point2.y) ; 
    } 
} 

लेकिन यह कोड काम नहीं कर रहा है अगर मैं एक उंगली पकड़ता हूं और फिर स्क्रीन को दूसरी उंगली से छूता हूं। इसे कैसे कार्यान्वित करें? क्या करना मुश्किल है?

उत्तर

19

सुनिश्चित करें कि UIView में multipleTouchEnabled=YES है, डिफ़ॉल्ट NO है।

संपादित करें: मैं देखता हूं कि समस्या क्या है। स्पर्श में बीजगान: साथ :, आपको केवल नए स्पर्श मिलेंगे। आपको सभी सक्रिय स्पर्श नहीं मिलते हैं। यदि संभव हो तो यह बहुत ही असंभव है, कि आपको एक ही समय में एक से अधिक स्पर्श शुरू होंगे। जांच करने के लिए एक से अधिक सक्रिय स्पर्श पूर्णांक touchesBegan होती है: इस प्रयास करें:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

    if ([[event touchesForView:self] count] > 1) { 
     NSLog(@"%d active touches",[[event touchesForView:self.view] count]) ; 


    } 
    [super touchesBegan:touches withEvent:event] ; 
} 
+0

धन्यवाद, लेकिन मदद नहीं करता है। मैंने कंट्रोलर को जोड़ा: [self.view setMultipleTouchEnabled: YES]; मैंने परीक्षण उद्देश्यों के लिए भी जोड़ा [स्वयं सेट बहुउद्देश्यीय सक्षम: हाँ] स्पर्श में बीज। – kesrut

+0

आपने [self.view setMultipleTouchEnabled: YES] कहां जोड़ा? – fsaint

+0

रीप्ले के लिए धन्यवाद। मैं देख रहा हूं [self.view setMultipleTouchEnabled: YES] दृश्य में DidLoad – kesrut

0

घटना प्राप्त करने वाली वास्तविक वस्तु क्या है? उस ऑब्जेक्ट को आपकी टच इवेंट मिल सकती है न कि आधार यूआईआरस्पॉन्डर।

उदाहरण के लिए यदि आप एक UIScroolView अंदर हैं तो आप सेकंड संपर्क कर सकते हैं:
- (UIView *) viewForZoomingInScrollView: (UIScrollView *) scrollview;

+0

धन्यवाद, लेकिन मैं जूमिंग जरूरत नहीं है। मैं सिर्फ छूने के साथ सबकुछ लागू करना चाहता हूं, स्पर्श करता है, छूता है, छूता है। यह विधि UIView लौटाती है, इसलिए यह मेरे लिए उपयुक्त नहीं है। – kesrut

0
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch1, *touch2; 
    CGPoint location1, location2; 

    NSSet *allTouches = [event allTouches]; 
    touch1 = [[allTouches allObjects] objectAtIndex:0]; 
    location1 = [touch1 locationInView:self]; 

    if([allTouches count] > 1) 
    { 
     touch2 = [[allTouches allObjects] objectAtIndex:1]; 
     location2 = [touch2 locationInView:self]; 
    } 
} 
संबंधित मुद्दे