簡単なビュー階層の例があります。
明らかに、メインビュースペースは、ユーザーが操作するプライマリスペースです。下部には、アプリの進行中の場所をユーザーに示すためにポップアップできるタブがあります。通常、これらのタブは、下部にある[カスタムタブ]の長方形で示されるスペースのみを占有しますが、[空のスペース]ボックスを埋めるために完全に拡張できます。
タブをクリックできるようにするには、タブビューのフレームを「カスタムタブ」スペースと「空のスペース」スペースの両方を含む完全な長方形にする必要がありました。これにより、タブがポップアップされていないときに「空のスペース」がユーザーに対して対話されなくなります。これは、入力が基本的にそのUIViewによって消費され、階層の残りの部分に転送されないためです。
この問題の根本は、「メインビュースペース」と「空のスペース+カスタムタブ」の両方がメインウィンドウのサブビューであることにあると思います。
ユーザーがインタラクティブな要素をアクティブにタップしなかった場合に、ユーザー入力を兄弟ビューに転送するようにシステムに指示する方法はありますか?たとえば、このビューが入力を使用しなかったことをOSに示すなどのメソッドを使用しtouchesBegan
て何かを実行します。touchesEnded
編集
ビューの別のバージョンは、開いている1つのタブの状態を示しています。
EDIT2
いくつかの簡単なテストの後、デフォルトの動作では、一番上のビューが最初に入力を取得するように見えます。UIView
これは、の上にクリアがある場合でも適用されますUITextField
。クリアUIView
は入力を消費し、UITextField
を編集できないようにします
EDIT3
タブの動作方法は、ユーザーがタブ(最初の画像のサイズ)をタップすると、タブが展開されて、そのタブに関連付けられたサムネイルビューが表示されます(2番目の画像のように)。その後、ユーザーはオプションでタブをもう一度タップして閉じ、サイズを元の画像に戻すことができます。タブを開いたときにクリックできるようにするには、基本的に、4つのタブすべてを開いているかのように含めるのに十分な大きさのビューを含める必要があります。これにより、含まれているビューに多くの空きスペースができます。この空のスペースは、画面上で本質的にデッドな入力スペースになります。メインビュースペースに空のスペースで覆われているボタンがある場合、ユーザーはそのボタンをクリックできません。その動作を回避し、空のスペースで覆われたボタンをクリックできるようにしたいと思います。