レスポンダチェーンを知ろう

ユーザーがこのメニューバーをタップするとそれはどこに行きどう見極めるのでしょうか

それにこたえるのにレスポンダチェーンが必要です

最初はUIエレメントのレスポンダから始まります。 そしてView, Controller , App Delegateへ辿っていく
好きなものをチェーンに挿入することもできます

そのためには

次のレスポンダをキャプチャして、新しいレスポンダにアサインしていきます

Macのアプリを使ったなら気づかずに活用したと思います
メモをとるようなアプリがあるとこのようになります

ユーザーがメニューからペーストを選ぶとテキストをノートに追加します
新しいノートが左側に出てくるわけです。
テキストフィールドがFirstResponderである TableRawがファーストレスポンダーなら、それが何かをデベロッパーが決める必要があります
View

ContainerView

Window
最終的には何も行われないということになるとfanctionが実行されます デフォルトではキーが押されたビープサウンドを鳴らします
iOSでは何も起きません

通常コントローラにはデリゲートプロパティがあります nil型やオブジェクトを気にせずに呼ぶ事ができます


iOSの中ではViewControllerをEmbedすることができる ダイレクトにデリゲートを指定するのではなくてParentviewcontrollerにターゲットのないものをレスポンダチェーンとして渡せる
もう一つの例を見てみましょう iOSのアプリではViewがある、
通常デリゲートがある


こうすると、prepare for segueのセットアップは必要ありません
コンテンツを隠す(ログインの後ろに隠す)ということを良くします

ParentViewControllerがログインを表す

Appleからこの事についてかなり詳しく書いています。OS 10, 10.4以前のものになりますが。


