我的图像似乎在我触摸每个其他更新的位置下方呈现。另一次它按预期进行。
我希望图像从上次移动时的偏移量移动而不会闪烁回到触摸位置。我怎么能这样做?
以下是代码:
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
设置使用此代码的演示应用程序:
希望有人可以帮我解决这个难题。我不是最数学的程序员。
答案 0 :(得分:1)
答案如下:
将此添加到.m文件中。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
请勿使用TouchesMoved。而是使用平移手势在视图中移动:
- (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];
}
答案 1 :(得分:0)
请尝试使用下一代码:
CGPoint touchPoint = [[touches anyObject] locationInView:_photoImageView.superview];
_photoImageView.center = touchPoint;
或者搜索拖动视图的实现,有很多例子。