4

プログラムでサブビューを追加します。サブビューごとに、ジェスチャ再認識機能を追加しています。

UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame = CGRectMake((position*1024)+200,0,image.size.width,image.size.height);
    UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc]
                                               initWithTarget:self action:@selector(singleFingerTap:)];
    singleFingerTap.numberOfTapsRequired = 1;
    [imageView addGestureRecognizer:singleFingerTap];
    [singleFingerTap release];

しかし、タップが応答していません。ジェスチャがサブビューに追加されたことを確認するにはどうすればよいですか?

4

1 に答える 1

3

コードの後に​​これを追加します。

NSLog(@"imageView.gestureRecognizers: %@", [imageView.gestureRecognizers description]);

ジェスチャ認識機能を適切に追加すると、それぞれの説明がコンソールに出力されます。そうでない場合は、コンソールに(NULL)または空の配列が表示されます。


ジェスチャレコグナイザーデリゲートを設定することもできます。

[singleFingerTap setDelegate:self];

次に、デリゲートメソッドを追加し、ブレークポイントを設定して、呼び出されていることを確認します。

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    NSLog(@"gestureRecognizerShouldBegin: called");
    return YES;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    NSLog(@"shouldReceiveTouch: called");
    return YES;
}
于 2012-09-21T21:15:39.060 に答える