iOS5のnextResponderの挙動

ちょっとハマったので解決してないけどとりあえずメモ。

iOS5がリリースされて、早速今のプロジェクトも5向けでリリースすることに。
スワイプの時はUIScrollViewでスクロール、タップの時は親ビューで処理したいって時に

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {	
  if (!self.dragging) {
    [self.nextResponder touchesEnded:touches withEvent:event]; 
  }
}

って感じでnextResponderにイベント投げてる人は多いと思う。
いや、実際は分からないけど僕はこうやってたわけです。

それがiOSを5にしたら親ビューにtouchesEndedが来ない…

仕方がないので力技で

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {	
  if (!self.dragging) {
    if (rootViewController_)
      [rootViewController_ touchesEnded:touches withEvent:event];
    else
      [self.nextResponder touchesEnded:touches withEvent:event]; 
    }
}

こんな実装にしてしまった…
自分が憎い。。
解決策をご存知の方がいたらぜひ教えて頂きたいです。

ってか公式ドキュメント読めって話ですかね…頑張ろう。


…スクロールビュー周りではいつもハマる。

nextResponder使わない方法ですが、スクロールビューの挙動を
理解するのにこの記事にはお世話になりました。

UIScrollView の上で UIView を動かしたい|Mac, IPHONE, IPAD