Ios 拖动带有触摸移动的闪烁图像

Ios 拖动带有触摸移动的闪烁图像,ios,objective-c,cocoa-touch,uigesturerecognizer,Ios,Objective C,Cocoa Touch,Uigesturerecognizer,每隔一次更新,我的图像就会显示在我触摸的位置下方。另一次,它按预期进行 我希望图像从上次移动时的偏移量移动,而不会闪烁回触摸位置。我该怎么做 代码如下: int xposStamp; int yposStamp; int lastxposStamp; int lastyposStamp; - (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event { lastxposStamp

每隔一次更新,我的图像就会显示在我触摸的位置下方。另一次,它按预期进行

我希望图像从上次移动时的偏移量移动,而不会闪烁回触摸位置。我该怎么做

代码如下:

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是一个imageview
  • DragableImageView是一个imageview
  • 实现了UIgestureRecognitzerDelegate
希望有人能帮我解决这个难题。我不是最数学的程序员

请尝试下一个代码:

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

或者搜索拖动视图的实现,有很多例子。

答案如下:

将此文件添加到.m文件中

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}
请勿使用触摸移动。而是使用平移手势在视图中移动:

- (void)panDetected:(UIPanGestureRecognizer *)panRecognizer
{

    CGPoint translation = [panRecognizer translationInView:self.view];
    CGPoint imageViewPosition = self.draggableImage.center;
    imageViewPosition.x += translation.x;
    imageViewPosition.y += translation.y;

    self.draggableImage.center = imageViewPosition;
    [panRecognizer setTranslation:CGPointZero inView:self.view];

}

我明白了。看看我的答案。