2012-01-08 20 views
8

पर आधारित दिशा को गड़बड़ कर देता है मेरे पास मेरे इशारा पहचानकर्ताओं के साथ एक छोटी सी समस्या है।पैन इशारा रोटेशन

मेरे पास "स्प्राइट" नामक एक वर्ग है जो सिर्फ एक UIImageView है। स्प्राइट का अपना इशारा पहचानकर्ता और हैंडलिंग विधियां हैं ताकि उपयोगकर्ता ग्राफिक को पैन, घुमाने और आकार बदल सकें।

-(void)setup{ //sets up the imageview... 
//add the image, frame, etc. 
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; 
    UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)]; 
    UIRotationGestureRecognizer *rotateGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotate:)]; 

    [self addGestureRecognizer:panGesture]; 
    [self addGestureRecognizer:pinchGesture]; 
    [self addGestureRecognizer:rotateGesture]; 
} 

//handling methods 
-(void)handlePinch:(UIPinchGestureRecognizer *)recognizer{ 
    recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); 
    recognizer.scale = 1; 
} 

-(void)handleRotate:(UIRotationGestureRecognizer *)recognizer{ 
    recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation); 
    recognizer.rotation = 0; 
} 
-(void)handlePan:(UIPanGestureRecognizer *)recognizer{ 
    CGPoint translation = [recognizer translationInView:self]; 
    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y); 
    [recognizer setTranslation:CGPointMake(0, 0) inView:self] 
} 

तो बुनियादी तौर पर उनमें से प्रत्येक अपने दम पर ठीक काम करता है:

यहाँ मेरी कोड है। हालांकि, जब मैं छवि दृश्य को घुमाने या आकार बदलता हूं, तो पैनिंग समस्याग्रस्त हो जाती है। उदाहरण के लिए, यदि आप छवि को ऊपर की तरफ घुमाते हैं, तो पैनिंग जेस्चर छवि को विपरीत दिशा में ले जायेगा (ऊपर है, बाएं चाल को दाईं ओर खींचें, आदि)। इसी तरह, एक आकार का स्प्राइट पहले की तरह एक ही गति/दूरी पर पैन नहीं करेगा।

इस पर कोई विचार है कि मैं इसे कैसे ठीक कर सकता हूं? मैं इस कोड को व्यू कंट्रोलर (यदि संभव हो) की बजाय स्प्राइट क्लास में रखना पसंद करूंगा। धन्यवाद।

उत्तर

12

अनुवाद के बजाय इनव्यू: स्वयं, अनुवाद का प्रयास करें इनव्यू: self.superview।

+0

टीएक्स @ जेरी, महान उत्तर। यह मुझे पूरी तरह पागल गाड़ी चला रहा था! –

+0

@ जेरी, यह अच्छी तरह से काम कर रहा है ... –

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