如何获取我正在点击的UIImageView的标签?

时间:2010-12-13 00:50:33

标签: iphone tags uigesturerecognizer

我有几个UIImageView,每个都有一个标签;我有一个图像数组,我想要做的是:当用户点击其中一个UIImageView时,应用程序会从数组中返回特定的图像。

我这样实现:

- (void)viewDidLoad 
{
    [super viewDidLoad];
    scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    [self.view addSubview:scroll];

    NSInteger i;
    for (i=0; i<8; i++) 
    {
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, i*100 + i*15, 300, 100)];
        imageView.backgroundColor = [UIColor blueColor];
        imageView.userInteractionEnabled = YES;
        imageView.tag = i;

        NSLog(@"%d", imageView.tag);

        [scroll addSubview:imageView];

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(findOutTheTag:)];
        [imageView addGestureRecognizer:tap];

    }

    scroll.contentSize = CGSizeMake(320, 115*i);

}
- (void)findOutTheTag:(id)sender
{

    //  HOW TO FIND THE tag OF THE imageView I'M TAPPING?

}

我想查找imageView.tag,并将imageView.tag传递给

UIImageView *tappedImage = [imageArray objectAtIndex:imageView.tag];

显示图像。

我确实标记了所有这些,问题是如何找到我正在点击的imageView的tag?谢谢你阅读^ _ ^

3 个答案:

答案 0 :(得分:12)

如果没有看到应用程序的完整图片而有可能提出建议,为什么不使用自定义UIButton代替UIImageViews呢?使用UIButton,您可以设置操作并传递发件人ID,您可以从中轻松访问您的代码并从阵列中提取数据。

或者,如果你真的想使用上面的代码并且你知道 - (void)findOutTheTag:(id)发送方法被调用,你所要做的就是:

- (void)findOutTheTag:(id)sender {
    switch (((UIGestureRecognizer *)sender).view.tag)      
{
    case kTag1:
    //...
    case kTag2:
    //...
  }
}

答案 1 :(得分:2)

为什么不使用UIButton,而不是使用UIImageView。这样你就可以简单地为UITouchDown事件添加一个监听器。您可以标记每个按钮,以便在touchDown方法中找到按下的按钮。

    UIButton *button = [[UIImageView alloc] initWithFrame:CGRectMake(10, i*100 + i*15, 300, 100)];
    button.backgroundColor = [UIColor blueColor];
    button.tag = i;
    [button addTarget:self action:@selector(touchDown:) controlEvent:UIControlEventTouchDown]; 

在touchDown:方法内部,您只需将发件人强制转换为UIButton即可访问该标记。

- (void)touchDown:(id)sender
{
    UIButton* button = (UIButton*)sender;
    switch(button.tag)
    {
        case TAG1:
           break;
        //etc
    }
}

答案 2 :(得分:1)

要找出必须触摸的图片,请使用 touchBegan 方法:

注意:首先,您需要确认图片视图应为userIntrectionEnabled=YES; 现在使用这个方法:

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event{
    // get touch event
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self.view];
    if ([touch view].tag == 800) {

     //if image tag mated then perform this action      
    }
}

您可以在 touchBegan 中使用switch语句。