我有几个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
?谢谢你阅读^ _ ^
答案 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语句。