0

我正在使用一个简单的代码将一些图像添加到我的UIScrollView. 此外,我还实现了另一个代码来检测每个图像上的触摸。

这是代码:

(void)handleSingleTap:(UIGestureRecognizer *)sender
{

    int senderTagIs;

    senderTagIs = sender.view.tag;

    if (sender.view.layer.borderColor != [UIColor cyanColor].CGColor) {

        sender.view.layer.borderColor = [UIColor cyanColor].CGColor;

        UIImageView *showFullImage = (UIImageView *)[self.view viewWithTag:sender.view.tag+100];
        [showFullImage setTag:sender.view.tag+200];
        [self.view addSubview:showFullImage];
        showFullImage.hidden = NO;

        NSLog(@"Show tag is: %i", sender.view.tag);

    }
    else
    {
        sender.view.layer.borderColor = [UIColor whiteColor].CGColor;

        UIImageView *hideFullImage = (UIImageView *)[self.view viewWithTag:sender.view.tag+200];
        [hideFullImage setTag:sender.view.tag+100];
        hideFullImage.hidden = YES;

        NSLog(@"Hide tag is: %i", sender.view.tag);
    }

}

UIScrollView上面的代码将边框颜色设置为青色,并在另一个中显示我的小图像UIImageView

但我的问题是,当触摸一个图像时,我无法设置隐藏所有图像并将所有图像的边框颜色设置为白色的选项。

例如:如果我触摸第一个图像,那么代码将起作用,我的大 UIImageView 将显示触摸的图像,并且触摸的图像将从UIScrollView中获得青色作为边框,到目前为止一切都很好。

现在,如果我触摸第三张图像,则会显示我的第一张图像,颜色边框是青色,所以......我必须再次触摸第一张图像才能禁用,但这不是我想要的。

4

1 回答 1

0

所以,我们在这里发生了一些事情。首先,我假设您正在尝试在滚动视图中显示一组图像,并使用一些自定义填充来指示它们周围的选择。这听起来很适合将 UICollectionView 与自定义单元格一起使用。

如果没有更多信息,您不会重置旧颜色。要么将所选图像的引用保留为类变量,要么假设您的图像视图位于像 NSArray 这样的集合对象中,通过迭代对象并将其视图重置为未选中状态来开始您的方法。

如果您只需要破解一个解决方案,那么第二个选项应该可以工作。我真的推荐使用 UICollectionView。一开始需要做更多的工作,特别是如果您没有使用它的经验,但它非常值得学习。这是关于UICollectionView的一个很好的教程。

于 2013-10-01T01:14:03.683 回答