在我的主视图中将UIImageView置于其他UIImageViews之上

时间:2013-06-12 16:42:24

标签: iphone ios objective-c xcode uiimageview

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

现在会发生这样的事情:当移动选定的UIImageView时(出于某种原因且相当随机),图像将不会停留在屏幕中的另一个UImageViews之上。我之所以说这是随机的,是因为它会保留在其他一些观点之上,但不会放在其他观点之上。

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

  1. 视觉上看起来很糟糕;没有理由感动被触及的UIImageView在另一个之下。
  2. 我有代码的方式是允许UIImageViews仅在包含图像时才移动​​。因此,如果UIImageView位于另一个不包含图像的人之下,我就无法触摸并再次移动它。看起来它已经卡住了。
  3. 请注意,我没有为此代码设置子视图,因此出现这种情况的原因超出了我的范围。

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

    • 获取被触摸的对象。
    • 如果是带有图片的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];
    }
    

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

1 个答案:

答案 0 :(得分:10)

[self.view bringSubviewToFront:imageView];

这就是你要找的......