我遇到一个问题,即我制作的点击手势识别器仅适用于 ScrollView 中的最后一项。
我有一组图像被添加到 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];
上面的代码可以正常工作,可以按顺序将图像添加到 ScrollView 中,也可以将点击添加到列表中的最后一项。也就是说,其余的人没有获得点击操作?
提前致谢。
最佳答案
正如我所看到的,您只有一个点击手势对象,这就是为什么当您运行循环时,它只会被添加到最后一个 ImageView 中。
您需要为一个 ImageView 创建一个点击手势对象。
UIImageView *imageView1;
for (int i = 0; i < numberOfViews; i++) {
xOrigin = i * imageSize;
imageView1 = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin,50,100,50)];
[imageView1 setUserInteractionEnabled:YES];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapMethod:)];
[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];
关于ios - uiscrollview 内的 uiimageview 上的 UITapgesturerecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22267020/