2

私の画像は、他のすべての更新に触れる位置の下にレンダリングされているように見えます。それ以外の場合は、期待どおりに機能します。

タッチ位置にちらつくことなく、最後に移動したときからオフセット量だけ画像を移動させたいです。どうやってやるの?

コードは次のとおりです。

int xposStamp;
int yposStamp;

int lastxposStamp;
int lastyposStamp;


- (void) touchesEnded: (NSSet *) touches
            withEvent: (UIEvent *) event
{
    lastxposStamp = xposStamp;
    lastyposStamp = yposStamp;
    NSLog(@"touchesEndedCalled");

}

- (void) touchesMoved: (NSSet *) touches
            withEvent: (UIEvent *) event
{
    if([touches count] == 1){

        CGPoint touchPoint = [[touches anyObject] locationInView:_photoImageView];

        CGRect rect = _draggableImageView.frame;

        int xOffset = touchPoint.x-rect.origin.x;
        int yOffset = touchPoint.y-rect.origin.y;

        rect.origin.x = lastxposStamp+xOffset;
        rect.origin.y = lastyposStamp+yOffset;

        _draggableImageView.frame = rect;

        //xpos and y pos of the stamp

        xposStamp = rect.origin.x;
        yposStamp = rect.origin.y;

        NSLog(@"xpos: %d, ypos: %d", xposStamp, yposStamp);
    }
}

また、ここに NSLog があります。

2013-08-19 14:25:52.898 JABImageMerge[2292:907] xpos: -11, ypos: 206
2013-08-19 14:25:52.914 JABImageMerge[2292:907] xpos: 133, ypos: 204
2013-08-19 14:25:52.930 JABImageMerge[2292:907] xpos: -16, ypos: 215
2013-08-19 14:25:52.946 JABImageMerge[2292:907] xpos: 128, ypos: 212
2013-08-19 14:25:52.962 JABImageMerge[2292:907] xpos: -19, ypos: 222
2013-08-19 14:25:52.978 JABImageMerge[2292:907] xpos: 124, ypos: 218
2013-08-19 14:25:52.994 JABImageMerge[2292:907] xpos: -21, ypos: 225
2013-08-19 14:25:53.010 JABImageMerge[2292:907] xpos: 121, ypos: 221
2013-08-19 14:25:53.026 JABImageMerge[2292:907] xpos: -22, ypos: 226
2013-08-19 14:25:53.042 JABImageMerge[2292:907] xpos: 120, ypos: 222
2013-08-19 14:25:53.058 JABImageMerge[2292:907] xpos: -21, ypos: 227
2013-08-19 14:25:53.074 JABImageMerge[2292:907] touchesEndedCalled

このコードを使用するデモ アプリをセットアップするには:

  • photoImageView はイメージビューです。
  • draggableImageView はイメージビューです。
  • UIGestureRecognizerDelegate を実装しました

誰かがこの難しい問題で私を助けてくれることを願っています. 私は最も数学的なプログラマーではありません。

4

2 に答える 2

0

代わりに次のコードを試してください:

 CGPoint touchPoint = [[touches anyObject] locationInView:_photoImageView.superview];
 _photoImageView.center = touchPoint;

または、ビューをドラッグする実装を検索すると、多くの例があります。

于 2013-08-19T14:21:56.183 に答える