レスポンダチェーンを知ろう | try! Swift Tokyo 2018 Day1-4

レスポンダチェーンパターンの仕組み、Appleフレームワークの仕組み、そしてその活用方法の例を紹介します。

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

f:id:niwatako:20180301114557j:plain

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

f:id:niwatako:20180301114744j:plain

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

f:id:niwatako:20180301114815j:plain

最初はUIエレメントのレスポンダから始まります。 そしてView, Controller , App Delegateへ辿っていく

好きなものをチェーンに挿入することもできます

f:id:niwatako:20180301114910j:plain

そのためには

f:id:niwatako:20180301114929j:plain

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

f:id:niwatako:20180301114956j:plain

Macのアプリを使ったなら気づかずに活用したと思います

メモをとるようなアプリがあるとこのようになります

f:id:niwatako:20180301115029j:plain

ユーザーがメニューからペーストを選ぶとテキストをノートに追加します

新しいノートが左側に出てくるわけです。

テキストフィールドがFirstResponderである TableRawがファーストレスポンダーなら、それが何かをデベロッパーが決める必要があります

View

f:id:niwatako:20180301115121j:plain

ContainerView

f:id:niwatako:20180301115126j:plain

Window

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

iOSでは何も起きません

f:id:niwatako:20180301115223j:plain

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

f:id:niwatako:20180301115314j:plain

f:id:niwatako:20180301115338j:plain

iOSの中ではViewControllerをEmbedすることができる ダイレクトにデリゲートを指定するのではなくてParentviewcontrollerにターゲットのないものをレスポンダチェーンとして渡せる

もう一つの例を見てみましょう iOSのアプリではViewがある、

通常デリゲートがある

f:id:niwatako:20180301115429j:plain

f:id:niwatako:20180301115449j:plain

こうすると、prepare for segueのセットアップは必要ありません

コンテンツを隠す(ログインの後ろに隠す)ということを良くします

f:id:niwatako:20180301115506j:plain

ParentViewControllerがログインを表す

f:id:niwatako:20180301115525j:plain

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

f:id:niwatako:20180301115543j:plain

f:id:niwatako:20180301115627j:plain

面白かったら、ためになったら

  • はてなブックマークSwift タグをつけてブックマーク!
  • 「インターネットで生活を楽しく豊かにしたい」仲間を募集しています
  • Bitcoin: 3KGqXtR1ZaGVdkvcw8CCNrkDxDhdbZBYHL