サムネイル画像のグリッドがあり、そのうちの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。そこで、カスタムボタンを作成し、そのフレームを画像フレームに一致するように設定し、内部の修正と応答方法に応答するように指示し、画像のサブビューに追加しました。しかし、これを実行すると、何も得られません。「タップされた画像」。コンソールに表示されないので、メッセージが送信されていないことがわかります。私はここで何が間違っているのですか?
たくさんのご協力に感謝します。