cocos2d の TouchDispatcher を使ってタッチの振り分けをしようと思ったらうまく動かない。
cocos2dフォーラムとかも調べてみたがだいたいありがちな対策はとってある・・・
と、途方にくれていたのだけど、突然 priority の値設定がテキトーだったことに気づいていじってみたら動いた。
どうやらディスパッチを特に指定しないで受け取った場合の priority が 0 で、これより優先する場合は負の数を指定しないといけないようですね。というわけで、
[[TouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:-1 swallowsTouches:YES];
が正解か。
あと、ここでswallowsTouchesを指定するとすべてのタッチが飲み込まれてしまうかというとそうではなくて、
ccTouchBegan で return NO; を返すと優先度の低いデリゲートへとタッチをスルーできるようだ。