我有一个问题,我所做的点击手势识别器只适用于滚动视图中的最后一项 .
我有一个图像数组,这些图像被添加到UIImageView中,UIImageView将在以下代码中添加到ScrollView:
UIImageView *imageView1;
for (int i = 0; i < numberOfViews; i++) {
xOrigin = i * imageSize;
imageView1 = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin,50,100,50)];
[imageView1 setUserInteractionEnabled:YES];
[imageView1 addGestureRecognizer:tap]; // The gesture I want
[imageView1 setImage:[images objectAtIndex:i]];
[scrollView addSubview:imageView1];
}
// Set the contentSize equal to the size of the UIImageView
// scrollView.contentSize = imageView.scrollview.size;
scrollView.contentSize = CGSizeMake(numberOfViews * imageSize, imageSize);
// Finally, add the UIScrollView to the controller's view
[self.view addSubview:scrollView];
上面的代码适用于将图像按顺序添加到滚动视图中,以及将点击添加到列表中的最后一项 . 也就是说,其余的人没有得到轻拍动作?
提前致谢 .
2 回答
因为我可以看到你只有一个点击手势对象,这就是为什么当你运行循环时,它只被添加到最后一个图像视图 .
您需要为一个图像视图创建一个点击手势对象 .
嗯,这是有道理的,因为您为所有图像视图添加了一个手势识别器 . 将相同的手势识别器添加到第二个视图时,它将从上一个视图中删除 . 您应该向滚动视图添加一个手势识别器,然后根据触摸位置确定点击了哪个图像视图,或者为每个图像视图添加单独的手势识别器 .
另一种方法是使用
UIButton
而不是UIImageView
s,然后你也可以免费获得"highlighted effect" .