0

私の問題は、x 軸方向にのみドラッグできるように設定されている uiimageview を画面全体にドラッグすると発生します。コードの種類は機能します。uiimageview は問題なく動いており、x 軸のみに制限されています。これはまさに本来あるべきことです。しかし、uiimageview のフレームの外側にドラッグし始めると、指の横に沿って動きが止まります。

これは明らかに、CGRectContainsPoint というメソッドと関係があります。ユーザーが指を置いたときにのみuiimageviewを移動させたいので、私のコードでは非常に必要です。

このメソッド CGRectContainsPoint を使用しなかった場合、ユーザーの指が画像に触れていなくても、画像は移動します。これを回避する作業は大歓迎です。

ここに私のコードがあります:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

NSLog(@"Touches Moved is running");

UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:self.view];

if (CGRectContainsPoint(UIImageView, location) && UIImageView >= 40)
{


    NSLog(@"Contains Point UIImageView Center!");

    CGPoint xLocation = CGPointMake(location.x,UIImageView);
    UIImageView = xLocation;

    //here it comes.. big block of code//
    if (location.x <= 40) {

        NSLog(@"Start Dragging Point");

        CGPoint newLocation = CGPointMake(40
                                          , 402);

        UIImageView = newLocation;
    }

    else if(location.x >= 273) {

        NSLog(@"End Dragging Point");

        CGPoint newLocation = CGPointMake(273
                                          , 402);

        UIImageView = newLocation;

    }
}
4

1 に答える 1

0

CGRectContainsPoint(UIImageView, location)から-(void)touchesMoved:...に移動し-(void)touchesBegan:...ます。

ビュー内でタッチを開始したときにのみビューを指すivarをそこに設定します。-(void)touchesMoved:...ビューを際限なく移動するには、この ivar from を使用します。-(void)touchesEnded:...その後、との両方でこの変数を設定解除できます-(void)touchesCancelled:...

于 2013-07-23T14:08:46.013 に答える