我试图找到用户使用手势识别器点击的图像。 滚动视图以及图像视图都是动态创建的。
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 100)];
scroll.pagingEnabled = YES;
int iPolaroidDimen = 200;
NSInteger numberOfViews = 10;
for (int i = 0; i < numberOfViews; i++) {
CGFloat xOrigin = i * self.view.frame.size.width;
UIImageView *polaroid = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"iconPol.png"]];
polaroid.frame = CGRectMake(xOrigin+(self.view.center.x/2)-(iPolaroidDimen/10), (self.view.center.y/2), iPolaroidDimen, iPolaroidDimen);
[scroll setShowsHorizontalScrollIndicator:NO];
polaroid.userInteractionEnabled = TRUE;
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
[polaroid addGestureRecognizer:singleTap];
[polaroid setUserInteractionEnabled:YES];
[polaroid setAccessibilityIdentifier:[NSString stringWithFormat:@"%@%@",@"ImageView",[NSString stringWithFormat:@"%d",i]]];
[scroll addSubview:polaroid];
手势识别器
- (void)imageTapped:(UIGestureRecognizer *)gestureRecognizer{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Guess what?"
message: @"An image was tapped"
delegate: self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK",nil];
[alert show];
}
答案 0 :(得分:1)
- (void)imageTapped:(UIGestureRecognizer *)gestureRecognizer {
UIView *tappedView = gestureRecognizer.view;
}
答案 1 :(得分:0)
您可以指定10个图像中的每个图像,以便稍后访问它们。您只需要在包含所有10个图像的顶视图中添加点击手势,然后在您的方法中添加以下示例代码(我在其中为每个图像指定一个不同的名称,例如cat,cow等:]):
- (void)imageTapped:(UIGestureRecognizer *)gestureRecognizer
{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Guess what?"
message: @"An image was tapped"
delegate: self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK",nil];
[alert show];
CGPoint point = [gestureRecognizer locationInView:self.view];
CGRect catRect = CGRectMake(self.cat.frame.origin.x, self.cat.frame.origin.y, self.cat.frame.size.width, self.cat.frame.size.height);
CGRect cowRect = CGRectMake(self.cow.frame.origin.x, self.cow.frame.origin.y, self.cow.frame.size.width, self.cow.frame.size.height);
if (CGRectContainsPoint(catRect, point)) {
NSLog(@"I am a cat!");
} else if (CGRectContainsPoint(cowRect, point)) {
NSLog(@"I am a cow!");
}
}