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];

touchesEnded:

-(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ているプロパティをオンにすることを確認してください。別の言葉では、imageViewはデフォルトでイベントをピックアップしていません。userInteractionEnabledNOUIImageView

于 2012-10-08T19:56:50.353 に答える