UIScrollViewでタッチイベントの実装で困った事

UIScrollViewでタッチイベントを取得

UIScrollViewにUIViewをのせて、タッチイベントを取得する際はUIViewにて以下を実装すれば良い

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesCanceled:(NSSet *)touches withEvent:(UIEvent *)event

 

これらを実装後、タッチした座標を取得した所、なんと下にスクローした際スクロールのイベントとタッチイベントが重複してしまい座標がとれない。とう自体が起きました。

元々自分は横軸の座標しか使わなかったため、UIScrollViewのスクロールを横の座標を取得している際は止めればおっけーでした。

 

UIScrollViewはシングルトン化しておいて、(objective-cでシングルトンパターンを試してみた。)

こんな感じに。scroll = [ScrollViewContoller sharedManager];

 

そして、touchesMoved関数内に

scroll.scrollEnabled = NO;

といれればタッチしたまま動いた際はスクロールしません。

タッチが終わったときはtouchesEnded関数内に

 scroll.scrollEnabled = YES;

 と入れれば戻ります。