UIResponder
イベントの処理と応答を抽象化するインタフェース
UIKit アプリケーションのイベントハンドリングのバックボーンを構成するのは、UIResponder のインスタンスである Responder objects
多くのオブジェクトが Responder objects
UIApplication, UIViewController, UIView, ...
イベントが発生すると、UIKit はそれをハンドリングするために Responder objects にディスパッチする
イベントには様々な種類がある
タッチイベント、モーションイベント、プレスイベント、...
Responder objects は適切なメソッドをオーバーライドしている必要がある
touchesBegan(_:with:), touchesMoved(_:with:), touchesEnded(_:with:), ...
この時、UIKit からイベントの情報を取得し、アプリケーションコード上ではその変更をトラックし、UI に反映する
Responder objects は UIEvent オブジェクトを処理するが、input view からカスタムな入力も受け付けられる
カスタムな input view を Responder objects に関連づけたい場合は、その inputView プロパティに view をアサインする
https://developer.apple.com/documentation/uikit/uiresponder