0

画面にブロックが浮かんでいる iOS アプリ (UIViews) を作成しようとしています。私はそれらを画面に浮かせていますが、ユーザーが落下中に x 軸上で移動できるようにしたいと考えています。以下のコードでやろうとしましたが、落ちるだけで左から右に移動しません。私の問題は、すでに画面を移動しているため、指で左から右に移動しようとしていることです。以下のコードを機能させるにはどうすればよいですか?

注: 画面を下に移動せずにビューを左から右に移動でき、左から右に移動せずに画面を下に移動できました。両方を組み合わせると問題が発生します。

Y 軸のアニメーション

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:letView.speed];
[UIView setAnimationDelay:0.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

letView.layer.frame = CGRectMake(letView.layer.frame.origin.x, [[UIScreen mainScreen] bounds].size.height, letView.layer.frame.size.width, letView.layer.frame.size.height);

[UIView commitAnimations];

タッチアニメーション

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self.view];
    //Goes through an array of views to see which one to move
    for (LetterView * view in _viewArray) {
        if (CGRectContainsPoint(view.frame, touchLocation)) {
            dragging = YES;
            currentDragView = view;
            [currentDragView.layer removeAllAnimations];
        }
    }
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self.view];
    if (dragging) {
        CGPoint location = touchLocation;
        currentDragView.center = CGPointMake(location.x, currentDragView.center.y);
    }
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    dragging = NO;
    [self checkForCorrectWord];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:currentDragView.speed];
    [UIView setAnimationDelay:0.0];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    currentDragView
    .layer.frame = CGRectMake(currentDragView.layer.frame.origin.x, [[UIScreen mainScreen] bounds].size.height, currentDragView.layer.frame.size.width, currentDragView.layer.frame.size.height);

    [UIView commitAnimations];
}
4

1 に答える 1