2

我的主视图中有很多UIImageViews,其中一些有图像,另一些是空白的。我有设置代码,将检查UIImageView当前包含图像。同时,此代码将负责允许UIImageView移动带有图像的图像。

现在发生的情况是:当移动一个选定UIImageView的对象时(出于某种原因并且非常随机),图像不会停留在UImageViews屏幕中另一个图像的顶部。我之所以说这是随机的,是因为它将停留在其他一些视图之上,而不是其他视图之上。

该行为是出乎意料的,出现了几个问题:

  1. 视觉上看起来很糟糕;一个被触摸的人没有理由UIImageView滑到另一个人的下面。
  2. 我编写代码的方式是UIImageViews仅在它们包含图像时才允许移动。因此,如果UIImageView在另一个不包含图像的情况下,我无法再次触摸和移动它。看起来它被卡在了原地。

请注意,我根本没有为此代码设置子视图,因此发生这种行为的原因超出了我的范围。

所以我的问题归结为,有什么方法可以告诉代码:

  • 获取被触摸的对象。
  • 如果是UIImageView带图像的,请允许我移动UIImageView.
  • 允许它UIImageView取代(位于之上)所有其他UIImageViews.

代码参考:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{UITouch *touch;
    UITouch *touch;    
    CGPoint touchLocation;

    for (UIImageView *fruit in fruitArray)
    {
        // Check that the UIImageView contains an image
        if([fruit image] != nil)
        {
            // Get the touch event.
            touch = [touches anyObject];
            // Get the location for the touched object within the view.
            touchLocation = [touch locationInView:[self view]];

            // Bring the UIImageView touch location to the image's center.
            if([touch view] == fruit)
            {
                fruit.center = touchLocation;
            }
        }
    }

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    //allow the selected event (in our case a UIImageView) to be dragged
    [self touchesBegan:touches withEvent:event];
}

谢谢您的帮助!如果您需要更好的解释,请告诉我

4

1 回答 1

10
[self.view bringSubviewToFront:imageView];

这就是你要找的...

于 2013-06-12T16:53:48.490 回答