2

別の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に関係するはずですよね?では、画面上で指を動かすと、ページ全体が移動するのはなぜですか?

4

1 に答える 1

2

すべてのビューを含むウィンドウ全体を移動しています。必要なビュー、この場合は viewA のみを移動する必要があります。

于 2012-05-02T09:47:19.970 に答える