1

サムネイル画像のグリッドがあり、そのうちの1つをタッチすると、画像全体が表示されます。これで、UIImageViewがタッチイベントに応答しないことがわかりましたが、この回答で提案されているように、イベントを処理するためのUIButtonを作成しました。以下のコードを参照してください。

- (void)displayImage
{
        NSUInteger i = 0; //  The actual code is different and works; this is just for brevity's sake.

        // UILazyImageView is a subclass of UIImageView
        UILazyImageView *imageView = [[UILazyImageView alloc] initWithURL:[NSURL URLWithString:[[[self images] objectAtIndex:i] thumbnailUrl]]];

        UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [imageButton setFrame:[imageView frame]];
        [imageButton addTarget:self action:@selector(imageTapped:) forControlEvents:UIControlEventTouchUpInside];
        [imageView addSubview:imageButton];

        [[self containerView] addSubview:imageView];
        [imageView release];
    }
}

- (void)imageTapped:(id)sender
{
    NSLog(@"Image tapped.");

    // Get the index of sender in the images array 
    NSUInteger index = 0;  // Don't worry, I know.  I'll implement this later

    FullImageViewController *fullImageViewController = [[[FullImageViewController alloc] initWithImageURL:[NSURL URLWithString:[[[self images] objectAtIndex:index] url]]] autorelease];
    [[self navigationController] pushViewController:fullImageViewController animated:YES];
}

Ok。そこで、カスタムボタンを作成し、そのフレームを画像フレームに一致するように設定し、内部の修正と応答方法に応答するように指示し、画像のサブビューに追加しました。しかし、これを実行すると、何も得られません。「タップされた画像」。コンソールに表示されないので、メッセージが送信されていないことがわかります。私はここで何が間違っているのですか?

たくさんのご協力に感謝します。

4

3 に答える 3

3

デフォルトでは、UIImageViewのuserInteractionEnabledプロパティはNOに設定されています

この行を追加します

imageView.userInteractionEnabled = YES;
于 2012-08-01T15:30:03.727 に答える
1

設定に加えてimageView.userInteractionEnabled = YES、ボタンを完全に削除し、タップを処理UITapGestureRecognizerするためににを追加することができます。UIImageView次のようになります。

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
[imageView addGestureRecognizer:recognizer];
于 2012-08-01T15:37:17.703 に答える
1

試す

imageView.userInteractionEnabled = YES;

これはUIViewから継承されたプロパティですが、Appleのドキュメントによると、UIImageViewはすべてのイベントを無視してデフォルト値をNOに変更します。

于 2012-08-01T15:29:55.300 に答える