その実装はほとんどありません。対するメソッド呼び出しをフックしてみようというお話です。パターンを実現するためのクラスです。オブジェクトを実現するのは実に簡単です。しての機能を実現します。オブジェクトを作ってみる簡単だと言いましたが、実際のところ何を言っているのかよくわかりませんね。オブジェクトを作ってみましょう。単独で使うことはほぼ無く、だいたいはサブクラスを作って使うことになります。オブジェクトが完成しました。メソッド呼び出しを動的に解決するためのしくみのひとつです。呼んでいないのもそのためです。呼び出しのみで使えます。慣れたエンジニアには非常に奇妙に見えますね。できたところで実際に使ってみましょう。ふりをさせてログを出力します。proxy!3つのメソッド呼び出しが出力されました。呼んでいることがわかります。受け流していることもわかります。内部的にどのようなメソッド呼び出しがされているかわかっておもしろいので、是非他にも色々なパターンを試してみてください。よるメソッド呼び出しのフックを利用して、”画面下部をタップして、ツールバーを表示する操作”を実装しています。画像はフルスクリーン時のものですが、非フルスクリーン時でも基本的には同じです。おなじみの操作ですね。この操作を実現するにはおおきく分けて以下の2つが実現できればよさそうです。サブクラスを作ってはいけないということです。なんとか外側のしくみを使って実現できないか考えてみます。タップされた位置にリンクがあれば、そのリンクに遷移します。ここではツールバーを表示するアクションとしてタップを利用したいため、この動作を抑制する必要があります。独自の動作を抑制することができます。スクロールせず、下部に見えないボタンがあるのと同じになってしまいます。イベントをフックできれば目的は達成できます。するのは少し面倒ですし、なんだか野暮ったいです。くるんでしまいましょう。差し替えてしまうというのがポイントです。発生したイベントを監視します。対するこれらの呼び出しを監視し、タップイベントを検出したらツールバーを出すアクションを発火すれば完成です。機能を抑制しつつ、タップイベントをハンドリングする機能を追加することができました。イベントハンドリングに使う方法を紹介しました。頭の片隅にでも置いておくとイザというときに役に立つかもしれません。