ios - Not able to move two images using uipangesturerecogniser -
i want move 2 images same uipangesturerecognizer
, able move first image, try move second image first 1 goes original position. want first image retain it's after changed position.
-(void) viewwillappear:(bool)animated { uipangesturerecognizer *pan = [[uipangesturerecognizer alloc] initwithtarget:self action:@selector(handlepansuper:)]; [self.view addgesturerecognizer:pan]; } - (void)handlepansuper:(uipangesturerecognizer *)sender { static uiimageview *viewtomove; static cgpoint originalcenter; if (sender.state == uigesturerecognizerstatebegan) { cgpoint location = [sender locationinview:self.view]; if (cgrectcontainspoint(self.imageview.frame, location)) { viewtomove = imageview; originalcenter = viewtomove.center; } else if (cgrectcontainspoint(self.image2.frame, location)) { viewtomove = image2; originalcenter = viewtomove.center; } else { viewtomove = nil; } if (viewtomove) { viewtomove.alpha = 0.8; [viewtomove.superview bringsubviewtofront:viewtomove]; nslog(@"hi being touched."); } } if (sender.state == uigesturerecognizerstatechanged && viewtomove != nil) { cgpoint translation = [sender translationinview:self.view]; viewtomove.center = cgpointmake(originalcenter.x + translation.x, originalcenter.y + translation.y); } else if ((sender.state == uigesturerecognizerstateended || sender.state == uigesturerecognizerstatefailed || sender.state == uigesturerecognizerstatecancelled) && viewtomove != nil) { // whatever post dragging want, e.g. // snap piece place // cgpoint center = viewtomove.center; //viewtomove.center = center; viewtomove.alpha = 1.0; viewtomove = nil; } }
you setting gesture recognizer in superview. why? set inside views trying move, it's easier , less strange behaviors edited code, see below (not tested)
-(void) viewwillappear:(bool)animated { uipangesturerecognizer *pan = [[uipangesturerecognizer alloc] initwithtarget:self action:@selector(handlepansuper:)]; self.imageview.userinteractionenabled = self.image2.userinteractionenabled = yes; [self.imageview addgesturerecognizer:pan]; [self.image2 addgesturerecognizer:pan]; } - (void)handlepansuper:(uipangesturerecognizer *)sender { uiimageview *viewtomove = (uiimageview*)sender.view; cgpoint originalcenter = viewtomove.center; if (sender.state == uigesturerecognizerstatebegan) { cgpoint location = [sender locationinview:self.view]; viewtomove.alpha = 0.8; [viewtomove.superview bringsubviewtofront:viewtomove]; nslog(@"hi being touched."); } else if (sender.state == uigesturerecognizerstatechanged) { cgpoint translation = [sender translationinview:self.view]; viewtomove.center = cgpointmake(originalcenter.x + translation.x, originalcenter.y + translation.y); } else if ((sender.state == uigesturerecognizerstateended || sender.state == uigesturerecognizerstatefailed || sender.state == uigesturerecognizerstatecancelled)) { // whatever post dragging want, e.g. // snap piece place // cgpoint center = viewtomove.center; //viewtomove.center = center; viewtomove.alpha = 1.0; viewtomove = nil; } }
please try this, , let me know if worked.
Comments
Post a Comment