0

我有一个按钮。每次用户点击它时,应用程序都会实例化UIImageView(imageview),为其标签分配一个唯一编号。

- (IBAction)buttonClicked:(id)sender {
    imageview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300, 240)];
    NSUInteger currentag = [self UniqueNum]; // Assigning a unique number to the tag variable
    [self.view addSubview:imageview];
    imageview.backgroundColor = [UIColor blueColor];
    imageview.userInteractionEnabled = YES;
    imageview.tag = currentag;
}

我的目标是获取用户触摸的 UIImageView 副本的标签号。使用下面的代码,我实际得到的是应用程序最后创建的 UIImageView 副本的标签号。如何改进它以便应用程序指向被触摸对象的标签号?

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    UITouch *touch = [[event allTouches] anyObject];
    if([touch view] == imageview) {
        NSLog(@"Tag: %i",imageview.tag);
    }    
}

谢谢您的帮助。

4

1 回答 1

1

如果您需要交互,我建议在这里使用带有自定义图像的 UIButtons 而不是 UIImageViews。

添加按钮时添加:

   [imageview addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventAllTouchEvents]; 

然后只需将senderin someMethod(您的声明)转换为 UIView 即可获取其标签。

顺便说一句, someMethod 的方法签名是这样的:

-(void) someMethod:(id)sender

您还可以选择添加一个事件参数,但这里似乎不需要。

于 2013-04-12T23:24:57.410 回答