UIFocusEnvironment
継承:なし
フレームワーク: iOS 8.0 以降の UIKit。関連情報...
概観
UIFocusEnvironment プロトコルは、ビュー階層の分岐のためのフォーカス動作を定義します。このプロトコルの目的は、アプリケーション全体の動作を指定し、フォーカスする反応のための共通のインタフェースを提供します。このプロトコルに準拠する UIKit のクラスは、UIView、UIViewController、UIWindow、およびUIPresentationController が含まれており、つまり、スクリーン上のビューの制御に直接的または間接的のいずれかであるクラスです。カスタムオブジェクトが UIFocusEnvironment プロトコルに準拠することは有用ではありません。
タスク
フォーカスの更新を要求
フォーカスの更新を要求する時:
- setNeedsFocusUpdate 必須
この環境でフォーカスを更新するためのフォーカスエンジンに要求を送信します。
宣言
<< SWIFT >>
func setNeedsFocusUpdate() << OBJECTIVE-C >> - (void)setNeedsFocusUpdate
議論
この環境が、現在フォーカスされているビューを含んでいない場合、このメソッドを呼び出しても効果はありません。その他の場合、フォーカスの更新はフォーカスエンジンによって受け入れられた場合、フォーカスは実行ループサイクルに好適なフォーカスされたビューにリセットされます。この環境の親もフォーカスを要求している場合、親の要求が優先されます。
利用可能
iOS 9.1 以降で利用可能。
- updateFocusIfNeeded 必須
フォーカスの更新をすぐにするよう、強制的にフォーカスエンジンに指示します。
宣言
<< SWIFT >>
func updateFocusIfNeeded() << OBJECTIVE-C >> - (void)updateFocusIfNeeded
議論
任意のフォーカス環境が、現在更新を保留して(setNeedsFocusUpdate を呼び出した後) いる場合、このメソッドを呼び出すとすぐにフォーカスを更新するようにフォーカスエンジンに強制します。setNeedsFocusUpdate とは異なり、この環境が現在フォーカスを含んでいるかは問題でなく、この環境が、更新を保留中のものであるかも問題ではありません。
利用可能
iOS 9.1 以降で利用可能。
フォーカスの動きを検証
- shouldUpdateFocusInContext: 必須
フォーカスエンジンが、文脈によって説明されたフォーカス更新が発生することを可能にするかどうかを示すブール値を返します。
宣言
<< SWIFT >>
func shouldUpdateFocusInContext(_ context: UIFocusUpdateContext) -> Bool << OBJECTIVE-C >> - (BOOL)shouldUpdateFocusInContext:(UIFocusUpdateContext *)context
パラメーター
context | UIFocusUpdateContext クラスのインスタンスで、フォーカスに関連した更新のメタデータを含みます。 |
戻り値
フォーカスの更新を可能にするには YES。それ以外の場合は、NO。
議論
フォーカスの更新が起ころうとしている時は、フォーカス・エンジンは昇順で、以前にフォーカスしたビュー、次にフォーカスしたビューのいずれか、あるいはその両方を含んでいるすべてのフォーカス環境でこのメソッドを呼び出します。全ての環境が NO を返した場合でも、更新はキャンセルされます。スクリーン上の特定の領域から、またはそれへ移動するフォーカスを防止するために、このメソッドをオーバーライドして下さい。
利用可能
iOS 9.1 以降で利用可能。
フォーカスの更新への反応
- didUpdateFocusInContext:withAnimationCoordinator: 必須
システムが新しいビューへのフォーカスを更新した直後に呼び出されます。
宣言
<< SWIFT >>
func didUpdateFocusInContext(_ context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) << OBJECTIVE-C >> - (void)didUpdateFocusInContext:(UIFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator
パラメーター
context | UIFocusUpdateContext のインスタンスで、フォーカスに関連した更新のメタデータを含んでいます。 |
coordinator | フォーカスに関連したアニメーションを調整するために使用される UIFocusAnimationCoordinator のインスタンス。 |
議論
フォーカスが新しいビューに更新された後、フォーカス・エンジンは、昇順で、以前にフォーカスしたビュー、次にフォーカスしたビューのいずれか、あるいはその両方を含んでいるすべてのフォーカス環境でこのメソッドを呼び出します。フォーカスの変化に応じてアプリの状態を更新するには、このメソッドをオーバーライドする必要があります。更新に関連した視覚的外観の変化をアニメーション化するために設けられたアニメーションコーディネーターを使用して下さい。アニメーションコーディネーターの詳細については、UIFocusAnimationCoordinator クラスリファレンス を参照してください。
利用可能
iOS 9.1 以降で利用可能。
ユーザーが生成したフォーカスの移動を制御
preferredFocusedView 必須プロパティ
この環境がフォーカスされている場合はフォーカスされていなければならないビューを指定します。(読み取り専用)
宣言
<< SWIFT >>
weak var preferredFocusedView: UIView? { get } << OBJECTIVE-C >> @property(nonatomic, weak, readonly) UIView *preferredFocusedView
議論
UIView は UIFocusEnvironment に適合しているので、このプロパティから返されたすべてのビューにも、好ましいフォーカスのビューがあります。これは、好適なフォーカスチェーン と呼ばれるビューのリンクリストを作成します。新しいビューにフォーカスを更新すると、フォーカス・エンジンは、その新しいビューの優先フォーカスチェーンで最も深い、フォーカス可能なビューにフォーカスを実際に更新します。同様に、アプリケーションの起動時のような初期フォーカスを設定する場合には、初期にフォーカスされたビューは、ルート・ウィンドウから好適フォーカスチェーンに従うことによって見付けられます。
デフォルトでは、UIView は、自分自身を返し、UIViewController は、そのルートビューを返します。フォーカス可能なビューで self を返すと、ビューはフォーカスされるべきであることを示します。フォーカス不可能なビューで self を返すと、フォーカス・エンジンは、デフォルトの好適なフォーカスされたビューを、最も近いフォーカス可能なサブビューを見つけることによって、選択させます。nil を返すと、好適なフォーカスビューが存在しないことを示します。
利用可能
iOS 9.1 以降で利用可能。
次の章