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に戻ります。
私は一般的にココアに不慣れであり、他の方法でこのレスポンダーを活用する方法がわかりません。
どんな提案/ヒントも素晴らしいでしょう。
前もって感謝します。