0

スクロール ビューの横にテキスト編集フィールドが 1 つあるウィンドウがあります。スクロール ビューのドキュメント ビューには複数のサブビューが含まれており、これらのサブビューの一部には、プログラムで NSTextViews として作成されたテキスト編集フィールドが含まれています。

アプリがウィンドウを起動すると、最上位のテキスト編集フィールドがフォーカスされて表示されるので、(私が思うに) 最初のレスポンダーです。次にユーザーが TAB キーを押しますが、最初のテキスト編集フィールド (多くのフィールドの中で) は、スクロールされてユーザーから見えなくなったドキュメント ビューのサブビューにあります。

アプリのデフォルトの動作は、フォーカスを「次の」テキスト フィールドに移動することです。それが見えないので、ユーザーはこれがどこにあるのかわからないことを除いて。

したがって、アプリの動作には 2 つの方法があります。アプリは、次のレスポンダーが明らかに範囲外であることを認識し、TAB キーが現在のフォーカスを変更しないようにする必要があります。または、アプリはどのテキスト編集フィールドが新しいフォーカスを受け取ったかを判断し、そのテキスト フィールドがユーザーに表示されるように自動的にスクロールする必要があります。どちらのシナリオも論理的であると主張できますが、後者の方がより有用だと思います。

親のスクロール ビューによって切り取られたために、フォーカスが表示されていると思われるが実際には表示されていない通常のテキスト編集コントロールに自動的に変更されたことをどのように判断しますか?

4

2 に答える 2