別のUIView(viewBと呼びましょう)の上にあるUIView(viewAと呼びましょう)を移動しようとしています。viewB は iPad 画面のサイズで、viewA ははるかに小さいです。
何とか動かせたのですが、viewAだけでなく画面全体(viewA+viewB)が動きます。
viewA クラスのコードは次のとおりです。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)イベント { UITouch *touch = [[event allTouches] anyObject]; CGPoint touchLocation = [touch locationInView:self->view]; if (CGRectContainsPoint(self.window.frame, touchLocation)) { ドラッグ = はい; 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; }
私が理解していないのは、これらのメソッドをviewAクラスに実装したことです。「自己」はこのビューAに関係するはずですよね?では、画面上で指を動かすと、ページ全体が移動するのはなぜですか?