UIScrollViewのタッチイベントを取得する方法

UIScrollViewがメインのページでは、scrollやzoomイベントを優先するためなのか、タッチイベントが笑えるぐらい全く動かない。
試しにUIScrollViewの手前にUIImageViewを設置して
1 |
imageView.userInteractionEnabled = YES; |
としてみると、確かにタッチイベントのみ取得できる。
もちろん、スクロールとズームはイベント取得できない。
これって、同居できないのか????
どうやら、UIScrollViewをハックすると、同居できるらしい事が判明。
下記の参考ページに丁寧にソースコードまで設置されていたので、やってみたところ、なんの問題もなく動作可能。
まだ、ハックの詳細(なんでこれで動くのか)がわかっていないが、とりあえず、アプリ完成を進めたいので、今のところは、これでOKとする。
ちなみに、ソースコードを転載しておきます。
TouchEvent.h (ファイル名はなんでもいい)
1 2 3 |
#import <UIKit/UIKit.h> @interface UIScrollView(TouchEvent) @end |
TouchEvent.m
1 2 3 4 5 6 |
#import "TouchEvent.h" @implementation UIScrollView(TouchEvent) -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [[self nextResponder] touchesBegan:touches withEvent:event]; } @end |
参考
http://tamotamago.com/?p=308
もしかして、いろんなイベントってこうやってハックしていって便利に使えるんじゃないだろうか・・・
アイデアだして研究してみようっと!!!