8

मैं आईओएस के लिए नया हूं, मैं अपनी परियोजना में UIPanGestureRecognizer का उपयोग कर रहा हूं। जब मैं दृश्य खींच रहा हूं तो मुझे वर्तमान स्पर्श बिंदु और पिछले स्पर्श बिंदु प्राप्त करने की आवश्यकता है। मैं इन दो अंक प्राप्त करने के लिए संघर्ष कर रहा हूं।UIPanGestureRecognizer विधि में वर्तमान स्पर्श बिंदु और पिछले स्पर्श बिंदु कैसे प्राप्त करें?

अगर मैं इसके बजाय UIPanGestureRecognizer का उपयोग करने का touchesBegan विधि का उपयोग करें, मैं निम्नलिखित कोड से इन दो अंक मिल सकता है:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    CGPoint touchPoint = [[touches anyObject] locationInView:self]; 
    CGPoint previous=[[touches anyObject]previousLocationInView:self]; 
} 

मैं UIPanGestureRecognizer घटना आग विधि में इन दो अंक प्राप्त करने के लिए की जरूरत है। इसे कैसे प्राप्त किया जा सकता है? कृपया मेरा मार्ग दर्शन कीजिए। वर्तमान स्थान की स्थापना करता है, तो नहीं मिला और वर्तमान स्थान हर जोड़कर

CGPoint currentlocation = [recognizer locationInView:self.view]; 

स्टोर पिछले स्थान:

उत्तर

15

आप इस का उपयोग कर सकते हैं।

previousLocation = [recognizer locationInView:self.view]; 
3

जब आप एक IBAction के लिए एक UIPanGestureRecognizer लिंक, कार्रवाई हर बदलाव पर बुलाया जाएगा। इशारा पहचानकर्ता भी एक संपत्ति state कहा जाता है जो इंगित करता है अगर यह पहले UIGestureRecognizerStateBegan है, पिछले UIGestureRecognizerStateEnded या सिर्फ UIGestureRecognizerStateChanged के बीच एक घटना प्रदान करता है।

अपनी समस्या को हल करने के लिए निम्न जैसे कि यह प्रयास करें:

- (IBAction)panGestureMoveAround:(UIPanGestureRecognizer *)gesture { 
    if ([gesture state] == UIGestureRecognizerStateBegan) { 
     myVarToStoreTheBeganPosition = [gesture locationInView:self.view]; 
    } else if ([gesture state] == UIGestureRecognizerStateEnded) { 
     CGPoint myNewPositionAtTheEnd = [gesture locationInView:self.view]; 
     // and now handle it ;) 
    } 
} 

तुम भी विधि translationInView: कहा जाता है पर एक नज़र हो सकता है। जबकि उपयोगकर्ता को देखने के साथ सूचना का आदान प्रदान

[aView addGestureRecognizer:panRecognizer]; 

- (void)handlePan:(UIPanGestureRecognizer *)recognizer विधि बुलाया जाएगा:

UIPanGestureRecognizer* panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; 

तो फिर आप अपने को देखने के लिए panRecognizer जोड़ना चाहिए:

0

आप इस प्रकार अपने पैन इशारा पहचानकर्ता का दृष्टांत चाहिए । handlePan में: आप बिंदु इस तरह छुआ प्राप्त कर सकते हैं:

if (recognizer.state == UIGestureRecognizerStateBegan) { 
    //do something 
} else if (recognizer.state == UIGestureRecognizerStateEnded) { 
    //do something else 
} 
+0

सिद्धांत रूप में यह काम करेगा ... लेकिन व्यवहार में ऐसा नहीं होता है ... – Sakiboy

0

UITouch में एक समारोह को ध्यान में रखते पिछले स्पर्श पाने के लिए नहीं है:

CGPoint point = [recognizer locationInView:aView]; 

तुम भी panRecognizer के राज्य प्राप्त कर सकते हैं

  • (CGPoint) स्थान इनव्यू: (UIView *) देखें;
  • (CGPoint) previousLocationInView: (UIView *) दृश्य;
संबंधित मुद्दे