6

UIScrollViewからタップされたUIImageViewを取得しようとしているだけです。

私はWeb上で上記を達成する2つの方法を見つけました。

1番目の方法:スクロールビューアーに追加する前に、uiimageviewでタップジェスチャを作成します。

この方法は私にはうまくいきませんでした。handleSingleTapメソッドが呼び出されることはありません。

私は自分が間違っていること/なぜこれが機能しないのかについての考えがありません。

    UITapGestureRecognizer *singleTap = 
    [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(handleSingleTap:)];
        singleTap.numberOfTapsRequired = 1;
        [imageView addGestureRecognizer:singleTap];
        [singleTap release];

        [framesSourceScrollview addSubview:imageView];
        [imageView release];

            - (void)handleSingleTap:(UIGestureRecognizer *)sender
            {   
                NSLog(@"image tapped!!!");
            }

2番目のメソッド:サブクラスUIScrollView

@interface SingleTapScrollViewer : UIScrollView {
}
@end

@implementation SingleTapScrollViewer

- (id)initWithFrame:(CGRect)frame 
{
    return [super initWithFrame:frame];
}

- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event 
{   
    // If not dragging, send event to next responder
    if (!self.dragging) 
        [self.nextResponder touchesEnded: touches withEvent:event]; 
    else
        [super touchesEnded: touches withEvent: event];
}
@end

In the ViewController

- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event 
{
    // Process the single tap here
    NSLog(@"Scroll view single tapped. touches count : %d", touches.count);
UITouch *touch = [touches anyObject]; 
    UIImageView *imgView = (UIImageView*)touch.view;
    NSLog(@"tag is %@", imgView.tag);
}

このメソッドを使用すると、touchesDownレスポンダーは呼び出されますが、「[touchesanyobject]」はタップされたUIImageViewではありません。

カウンターを増やしてスクロールビューに追加するすべてのUIImageViewに「タグ」を設定しようとしましたが、どのイメージビューをタップしても0に戻ります。

私は一般的にココアに不慣れであり、他の方法でこのレスポンダーを活用する方法がわかりません。

どんな提案/ヒントも素晴らしいでしょう。

前もって感謝します。

4

1 に答える 1

12

UIImageViewでuserInteractionEnabled=YESを設定しましたか。デフォルトではオフになっています。

于 2011-05-03T21:18:25.907 に答える