获取被触摸对象的标记号

时间:2013-04-12 23:09:39

标签: ios6 tags addsubview

我有一个按钮。每次用户点击它时,应用程序都会实例化 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);
    }    
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

添加按钮时添加此项:

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

然后将sender(您的声明)中的someMethod转换为UIView以获取其标记。

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

-(void) someMethod:(id)sender

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