2012-07-08 41 views
0

我想为UIImageView实现一个UIPanGestureRecognizer。目前,我可以拖动UIImageView并约束它移动到哪里并且工作。但是,它正在移动看起来是UIImageView的副本,并且原始的UIImageView仍在原地。为什么会发生?在的UIImageView被创建并添加到主视图用UIPanGestureRecognizer移动UIImageView

后,我加入了手势识别:

UIPanGestureRecognizer* pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(tileDragged:)]; 
pan.maximumNumberOfTouches = 1; 
pan.minimumNumberOfTouches = 1; 
[tileImageView addGestureRecognizer:pan]; 

然后在我的tileDragged方法:

case UIGestureRecognizerStateChanged: 
{ 
    PuzzleTileView *tileView = (PuzzleTileView *)[self.allTiles objectAtIndex:panGesture.view.tag]; 

    CGFloat x = 0.0; 
    CGFloat y = 0.0; 

    // x and y are calculated. 
    [tileView setTransform:CGAffineTransformMakeTranslation(x, y)]; 

    break; 
} 
+1

这只是一个简单的错误,你有一个以上的图像。很多人拖动UIImageView的时候没有发生任何事情。这里没有什么明显的代码(尽管不清楚tileImageView是什么以及tileView是什么),所以您可能需要给我们一个更全面的代码示例。您可以尝试添加一些调试消息(例如,在'viewDidLoad'处再次在'tileDragged'方法中记录您的视图的子视图的数量)。 – Rob 2012-07-08 03:47:52

+0

@RobertRyan你是对的。发生了什么事是我偶然地将图像初始化了两次。感谢您指出了这一点。我无法相信我忽略了这一点,我一直在努力解决这个问题。 – mservidio 2012-07-08 03:50:07

+0

@RobertRyan - 请发表回答,以便我接受。 – mservidio 2012-07-09 15:18:46

回答

0

它必须是一个简单的问题那里你有多个图像。很多人拖动UIImageView的时候没有发生任何事情。在你的代码中没有任何明显的东西(尽管我对不同的变量/类名称感到困惑),所以你可能需要给我们一个更全面的代码示例。您可以尝试添加一些调试消息(例如,在viewDidLoad以及tileDragged方法中记录您的视图的子视图的次数)。

我收集你的意见,你终于解决了这个问题。恭喜!

+0

我已更正帖子中的变量名称。对于那个很抱歉。 – mservidio 2012-07-09 15:44:58

相关问题