UIScrollViewにピンチイン/アウトとタッチイベントを同時実装できません

UIScrollViewにピンチイン/アウトとタッチイベントを同時実装したいのですが、はまっております。ググッたら、UIScrollViewを継承したサブクラスをつくってタッチイベント関連のメソッドをオーバーライドする必要があるらしい(http://d.hatena.ne.jp/spitfire_tree/20100707/1278470269)のですが、いまいちわかりません。ピンチインできたと思ったらタッチイベントを取得できなく、タッチイベント取得できるようになったと思ったらピンチできなくなっている、、という状態を繰り返しています。


また、@iphone_dev_jpで質問させていただきましたが、UIImageViewのuserInteractionEnabledをYESにしてもダメでした。


ソースをのせておきますので、わかるお方がいましたらご教授くださいませ。m(_ _)m

  • ImageTestViewController.h

#import

@interface ImageTestViewController : UIViewController {
IBOutlet UIScrollView *scrollView;
UIImageView *imageView;
}
@property (nonatomic, retain) UIScrollView *scrollView;
@property (nonatomic, retain) UIImageView *imageView;

@end

  • ImageTestViewController.m

#import "ImageTestViewController.h"
#import "MyScrollView.h"

@implementation ImageTestViewController
@synthesize scrollView,imageView;

- (void)viewDidLoad {

[super viewDidLoad];
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
self.imageView = tempImageView;
self.imageView.userInteractionEnabled = YES;
[tempImageView release];

scrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);
scrollView.maximumZoomScale = 5.0f;
scrollView.minimumZoomScale = 0.5f;
scrollView.clipsToBounds = YES;
scrollView.delegate = self;
scrollView.userInteractionEnabled = YES;
[scrollView setScrollEnabled:YES];
[scrollView addSubview:imageView];

}


- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView {
for(id subview in self.scrollView.subviews) {
if([subview isKindOfClass:[UIImageView class]]) {
return subview;
}
}
return nil;
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touch!!");
}

- (void)dealloc {
[imageView release];
[scrollView release];
[super dealloc];

}
@end

  • MyScrollView.h

#import
#import "ImageTestViewController.h"

@interface MyScrollView : UIScrollView {
}
@end

  • MyScrollView.m

@implementation MyScrollView

//オーバーライド
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
if (!self.dragging) {
[self.nextResponder touchesEnded: touches withEvent:event];
}
[super touchesEnded: touches withEvent: event];
}

- (void)dealloc {
[super dealloc];
}

@end