私が正しく理解していれば、 touchesEnded イベントは検出されますが、それについて知る必要があるサブビューでは検出されません。これはあなたのために働くかもしれないと思います:
共通ファイルで、TOUCHES_ENDED_IN_SUPERVIEW を @"スーパービューで終了したタッチ" として定義します。
起動している包含ビューの touchesEnded メソッドで、追加します
[[NSNotificationCenter defaultCenter] postNotificationName: TOUCHES_ENDED_IN_SUPERVIEW object: self];
サブビューの touchesBegan に、追加します
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(touchesEnded:)
name: TOUCHES_ENDED_IN_SUPERVIEW
object: self.superview];
サブビューの touchesEnded メソッドで、イベントに通常のロジックを使用し、さらに追加します
[[NSNotificationCenter defaultCenter] removeObserver: self name: TOUCHES_ENDED_IN_SUPERVIEW object: self.superview];
touchesEnded イベントを取得せずにページを離れることができる場合に備えて、[[NSNotificationCenter defaultCenter] removeObserver: self] も dealloc に入れることを忘れないでください。
touchesEnded 自体を呼び出す特別な touchesEndedInSuperview メソッドに通知のメッセージを送信する必要があるかもしれませんが、その場合に実行する特別な処理があるかどうかによって異なります。