Déplacer un UIView avec mon doigt


1

J'essaye de déplacer un UIView (appelons-le viewA), qui est situé au-dessus d'un autre UIView (appelons-le viewB). viewB a la taille de l'écran de l'iPad, et la vue A est beaucoup plus petite.

Je parviens à déplacer des choses, mais tout l'écran bouge (viewA + viewB), et pas seulement viewA.

Voici mon code pour la classe viewA:


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; CGPoint touchLocation = [touch locationInView:self->view]; if (CGRectContainsPoint(self.window.frame, touchLocation)) { dragging = YES; oldY = touchLocation.y; } }

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; CGPoint touchLocation = [touch locationInView:self->view]; if (dragging) { CGRect frame = self.window.frame; frame.origin.y = self.window.frame.origin.y + touchLocation.y - oldY; self.window.frame = frame; } } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { dragging = NO; }

Ce que je ne comprends pas, est, je mis en œuvre ces méthodes dans la classe viewA. "Self" devrait concerner cette vueA, non? Alors pourquoi la page entière bouge-t-elle lorsque mon doigt bouge sur l'écran?

2

Vous déplacez toute la fenêtre, qui contient toutes les vues, vous ne devez déplacer que la vue que vous voulez, viewA dans votre cas.