A Day In The Life

とあるプログラマの備忘録

Responder Chainとイベント

iPhone/iPod Touchで画面をタッチすると以下のイベントが発生します。

  • touchesBegan:withEvent:
  • touchesMoved:withEvent:
  • touchesEnded:withEvent:
  • touchesCancelled:withEvent:

このイベントはUIResponderというクラスを継承しているUIViewやUIViewControllerクラスのオブジェクトで拾うことができます。
このイベントは画面最前面のUIView(First Responderといいます)で発生して順番に親ViewをたどってさらにUIViewをまとめて管理しているUIViewControllerまでイベントを伝達してくれます。
ちなみにこの仕組み、Cocoa的にはResponder Chainというそうです。
SwingやAndroidだとインナークラス作ってそこに実装みたいなことをしないといけませんがResponder Chainのおかげでビューのイベントをコントローラで割と簡単に実装できます。
VBのイベントドリブンに似ているなぁとVBがマネをしたのかもしれませんが。