1

我一直在尝试使用touchedBegan 和touchedEnded。我基本上只是想在我的视图中创建一个图像。然后能够在用户触摸图像时做一些事情。当我触摸图像时,它确实会执行我的 if 语句中的代码。知道我做错了什么吗?

viewDidload:

UIImage *image = [UIImage imageNamed:@"myimage1.png"];
imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(0, 0, 320, 200);
[self.view addSubview:imageView];
imageViewsArray = [NSArray arrayWithObjects:imageView, nil];

接触结束:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];

    // do this on touch
    UIView *touchedView = [touch view];
    if ([imageViewsArray indexOfObject:touchedView] != NSNotFound) {
        // not not found means found!
        NSLog(@"Got Touch!");
    }
}

我也尝试使用这个 if 语句:

if ([[touch view] isKindOfClass:[UIImageView class]]) {
        NSLog(@"Got Touch 2!");
}
4

2 回答 2

1

如果您想在点击图像视图时收到通知,我建议您使用更简单的方法,使用UITapGestureRecognizer.

// After initializing and adding your UIImageView:
UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self       
                               action:@selector(handleTap:)];
[imageView addGestureRecognizer:gr];

- (void)handleTap:(UITapGestureRecognizer *)gr {
    NSLog(@"Touched!");
}

如果您想坚持使用touchesEnded,请尝试以下步骤:

  • 检查您的imageViews数组是否nil不在touchesEnded.
  • 记录[touch view]以查看哪个视图正在接收触摸。
于 2012-10-08T19:03:49.337 回答
1

就像 DrummerB 说的那样,我会推荐使用UITapGestureRecognizer在这里查看官方文档以更好地了解它的工作原理,但主要是将手势识别器与将处理点击的视图相关联。在你的情况下,因为你正在处理一个UIImageView确保你打开默认情况下userInteractionEnabled设置为的属性:换句话说,imageView默认情况下不会接收事件。NOUIImageView

于 2012-10-08T19:56:50.353 回答