从多个图像视图中识别特定的图像视图

Posted

技术标签:

【中文标题】从多个图像视图中识别特定的图像视图【英文标题】:Identify specific image view from multiple imageviews 【发布时间】:2011-05-02 06:18:34 【问题描述】:

我有一个图像视图,我在上面设置了其他图像视图并将它们放在不同的位置。我想在法师视图上应用 FLIP ANIMATION。怎么办?当 if(i==1) 然后我的图像视图被翻转。 img1 是我的图像视图,我想识别它。我在`imagearr

中分配了52张图片

我的代码:

-(void)setCards


    int k=0;
    CGFloat dx = self.view.frame.size.width/2;
    CGFloat dy = self.view.frame.size.height/2;

    int cnt = [imagearr count];


    for (int j=1; j<3; j++)            // Number of cards
    
        for (int i=1; i<5; i++)         // Number of players
        
            int rnd = (arc4random() % cnt)-1;   
            UIImage *img = [imagearr objectAtIndex:rnd];
            UIImageView *img1 = [[UIImageView alloc] initWithImage:img];

            CGRect frame = img1.frame;
            frame.size.width = frameX;
            frame.size.height = frameY;
            [img1 setFrame:frame];
            [img1 setTag:k+i];

            [UIView beginAnimations:@"Move" context:nil];
            [UIView setAnimationDuration:0.50];
            if (i==1)
            
                [img1 setCenter:CGPointMake(dx+100, dy+(j*15))];

            
            if (i==2) 
            
                [img1 setCenter:CGPointMake(dx+(j*15), dy+60)];
            
            if (i==3) 
            
                [img1 setCenter:CGPointMake(dx-130, dy-(j*15))];
            
            if (i==4) 
            
                [img1 setCenter:CGPointMake(dx-(j*20), dy-95)];
            

            [self.view addSubview:img1];
            [UIView commitAnimations];
            [img1 release];

        
        k=k+10;      
    




-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 
    UITouch *touch = [[event allTouches] anyObject];
    int t = [touch view].tag;



我仍然无法识别特定的图像视图。请帮我解决这个问题。

【问题讨论】:

在这里重新提出相同的问题是不可接受的行为。如果您想引起注意您的问题,两天后您将被允许place a bounty on it。您也可以edit your question添加更多信息,这可能会使您的问题更容易理解和回答。 【参考方案1】:

为单个 imageView 设置标签是最好的方法。使用标签,您甚至可以检测放置在 tableview 单元格内的多个图像,并设置操作以选择单个标签。

【讨论】:

【参考方案2】:

我认为您应该看看 Apple 示例项目 GeekGameBoard。它实现了一个纸牌游戏,您将能够学习如何选择代表卡片的CALayers*、拖动它们并让它们相互交互。


*从性能的角度来看,这比使用视图更容易而且可能更好。

【讨论】:

【参考方案3】:

为每个 UIImageView 实例关联一个唯一的标记值。

代码供参考。

myImageView1.tag = 1;
myImageView1.tag = 2;
myImageView1.tag = 3;

【讨论】:

【参考方案4】:

Apple 链接代码: Detect imageview from multiple imageview

堆栈链接也是如此 Here is the discussion for to detect the images from the multiple images

祝你好运

【讨论】:

【参考方案5】:

不同的imageView会有不同的图片,所以每个imageView会在不同的位置。

在您的触摸方法中,您是否必须检查触摸的边界,然后您必须匹配位于您的触摸区域下的哪个 imageView。据此,您可以继续您的功能。

【讨论】:

【参考方案6】:

您可能可以在您的图像视图上放置一个不可见的 UI 按钮 并捕获触摸事件。效果是一样的,而且更干净、更简单。如果您需要更多信息,请告诉我。很乐意在这里编辑我的答案。

【讨论】:

感谢您的回复,但我想对 imageview 进行具体的说明,所以我想正确地做到这一点... 是的,你用一个不可见的按钮覆盖你的图像视图,你可以使用标签或编写特定的回调来获取触摸事件。我已经阅读了它及其强烈推荐的做法。将尝试在此处发布相关链接。【参考方案7】:

你可以尝试类似的方法

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event //here enable the touch       

    // get touch event      
    UITouch *touch = [[event allTouches] anyObject];
    int t = [touch view].tag;
    UIImageView *imageView = (UIImageView *) [self.view  viewWithTag:t];

    //your logic here

【讨论】:

以上是关于从多个图像视图中识别特定的图像视图的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 在图像而不是视图上使用手势识别器

从一个视图控制器访问一组图像到另一个视图控制器,以添加滑动手势识别器

无法识别导航栏的图像视图上的触摸。?

如何将手势识别器添加到一系列子视图中?

将手势识别器添加到表格单元格中的图像视图

如何从表格视图单元格中的图像手势获取 indexPath