以下を実現したい。
シナリオ: ユーザーが特定のテキスト フィールドに入力している間、iOS キーボードが画面に表示されます。ユーザーは、キーボードとテキスト フィールド以外の場所をタップして、キーボードを閉じることができます (表示されているボタンをアクティブにする必要はありません)。また、ユーザーはキーボードの外側にドラッグして、スクロール可能なビューの配置で通常のドラッグ動作を観察できます。
概念的には、次UIView
のように動作するほとんどの画面に「カバー」を配置しています。
ユーザーがカバーをタップすると、そのタップをキャプチャします (たとえば、キーボードを閉じることができるようにします)。これは、サブクラスでタッチ イベントをインターセプトする
UIView
か、タップ ジェスチャ レコグナイザーを使用することで簡単に実現できます。ユーザーがカバーをドラッグすると、カバーはこれらのタッチを無視または転送します。これらは、カバーがない場合と同じように、下の層によって受け取られます。
したがって、ユーザーは表紙の下のコンテンツをスクロールできる必要がありますが、表紙の下のコンテンツをタップすることはできません。キーボードとテキスト フィールドの「外側」をタップすると、キーボード (およびカバー) が非表示になりますが、何もアクティブ化されません。
どうすればこれを達成できますか?