UIResponder
フレームワーク:iOS 2.0 以降の UIKit。 関連項目
UIResponder クラスは、イベントに対応し、処理するオブジェクトのインターフェイスを定義します。それは UIApplication、UIView と(UIWindow を含む) そのサブクラスのスーパークラスです。これらのクラスのインスタンスは、時にはレスポンダオブジェクトまたは、単に、レスポンダと呼ばれます。
イベントには2つの一般的な種類があります: タッチイベントとモーションイベントです。タッチのための主要なイベント処理メソッドは touchesBegan:withEvent:, touchesMoved:withEvent:, touchesEnded:withEvent:, と touchesCancelled:withEvent: です。それらのイベントのタッチに伴う、これらのメソッドのパラメーターは、特に新しいか変更されているタッチで、レスポンダオブジェクトが追跡し、配信イベントが複数のタッチシーケンスの相を経た進行としてタッチを処理できるようにします。指がスクリーンに触れたら、画面上でドラッグされたら、または画面から持ち上げられたら、いつでも UIEvent オブジェクトが生成されます。イベントオブジェクトには、スクリーン上の指や、それから持ち上げたばかりの全ての指の UITouch オブジェクトを含んでいます。
iOS 3.0 は、モーションイベント、特にデバイスを振る具体的なモーションを生成するためのシステムの機能を導入しました。これらの種類のイベント処理メソッドは motionBegan:withEvent:, motionEnded:withEvent:, そして motionCancelled:withEvent: です。さらに iOS 3.0 では、undoManager プロパティがレスポンダチェーン内の最も近い NSUndoManager オブジェクトを返す間、canPerformAction:withSender: メソッドは、レスポンダが、ユーザーインターフェイス内のコマンドを検証することができるようにします。
iOS 4.0 では、UIResponder は remoteControlReceivedWithEvent: メソッドをリモートコントロールイベントを処理するためにを追加しました。
タスク
レスポンダチェーンの管理
- nextResponder
受信者の次のレスポンダ、それがなければ nil を返します。
宣言
<< SWIFT >>
func nextResponder() -> UIResponder?
<< OBJECTIVE-C >>
- (UIResponder *)nextResponder
戻り値
レスポンダチェーンの次のオブジェクトを、処理するためのイベントを提示します。
議論
UIResponder クラスは、デフォルトでは nil を返す代わりに、自動的に保存したり、次のレスポンダを設定しません。サブクラスは次のレスポンダを設定するために、このメソッドをオーバーライドする必要があります。UIView は、(もしあれば) それを管理する UIViewController オブジェクトを返し、あるいは(そうでない場合は) そのスーパービューを返してこのメソッドを実装します。UIViewController は、そのビューのスーパービューを返すことでメソッドを実装します。UIWindow は、アプリケーションオブジェクトを返し、UIApplication は nil を返します。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
– isFirstResponder
受信者がファーストレスポンダであるかどうかを示すブール値を返します。
宣言
<< SWIFT >>
func isFirstResponder() -> Bool
<< OBJECTIVE-C >>
- (BOOL)isFirstResponder
戻り値
受信機者がファーストレスポンダである場合 YES、それ以外の場合 NO。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
- canBecomeFirstResponder
受信しゃがファーストレスポンダになれるかどうかを示すブール値を返します。
宣言
<< SWIFT >>
func canBecomeFirstResponder() -> Bool
<< OBJECTIVE-C >>
- (BOOL)canBecomeFirstResponder
戻り値
受信機者がファーストレスポンダになれる場合 YES、それ以外の場合 NO。
議論
デフォルトでは NO を返します。レスポンダオブジェクトが、このメソッドから YES を返した場合は、それはファーストレスポンダになり、タッチイベントやアクションメッセージを受け取ることができます。サブクラスは、ファーストレスポンダになることができるように、このメソッドをオーバーライドしなければなりません。
現在、ビュー階層に接続されていないビューにこのメッセージを送信してはなりません。結果は未定義です。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
– becomeFirstResponder
そのウィンドウ内でファーストレスポンダになろうとしている受信者に通知します。
宣言
<< SWIFT >>
func becomeFirstResponder() -> Bool
<< OBJECTIVE-C >>
- (BOOL)becomeFirstResponder
戻り値
受信者は、ファーストレスポンダの状態を受け入れられれば YES、このステータスを拒否した場合 NO。デフォルトの実装は、ファーストレスポンダの状態を受け入れる、YES を返します。
議論
サブクラスは状態を更新したり、選択をハイライトするような、いくつかのアクションを実行するには、このメソッドをオーバーライドできます。
レスポンダオブジェクトは、現在のレスポンダがファーストレスポンダの状態(canResignFirstResponder) と、新しいレスポンダがファーストレスポンダになることができる事をやめることができさえすればファーストレスポンダになります。
ビュー・ファーストレスポンダのようなレスポンダオブジェクトを作成するには、このメソッドを呼び出すことができます。しかし、それがビュー階層の一部である場合、そのビューだけでそれを呼び出す必要があります。ビューの window プロパティが UIWindow オブジェクトを保持している場合は、ビュー階層にインストールされています。それが nil を返す場合、ビューは、全ての階層から切り離されます。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
– isFirstResponder– canBecomeFirstResponder
- canResignFirstResponder
受信者がファーストレスポンダの状態を放棄する意思があるかどうかを示すブール値を返します。
宣言
<< SWIFT >>
func canResignFirstResponder() -> Bool
<< OBJECTIVE-C >>
- (BOOL)canResignFirstResponder
戻り値
受信者が、ファーストレスポンダの状態を放棄できる場合、YES。それ以外の場合は NO。
議論
デフォルトでは、YES を返します。例えば、編集の途中でテキストフィールドは、編集中に、それ自体をアクティブに維持するために NO を返すようにこのメソッドを実装できます。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
– resignFirstResponder– resignFirstResponder
そのウィンドウ内のファーストレスポンダとしての状態を放棄するように要求されたことを受信者に通知します。
宣言
<< SWIFT >>
func resignFirstResponder() -> Bool
<< OBJECTIVE-C >>
- (BOOL)resignFirstResponder
議論
デフォルトの実装は、YES を返し、ファーストレスポンダの状態を放棄します。サブクラスは状態を更新したり、選択ほ強調表示をやめたりして、何らかのアクションを実行するか、ファーストレスポンダの状態を放棄することを拒否し、NO を返すようにするには、このメソッドをオーバーライドできます。このメソッドをオーバーライドする場合は、あなたのコード内のいくつかの点で、super (スーパークラスの実装) を呼び出す必要があります。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
– isFirstResponder– canResignFirstResponder
入力ビューの管理
inputView プロパティ
受信者がファーストレスポンダになったときに表示されるカスタム入力ビュー。(読み取り専用)
宣言
<< SWIFT >>
var inputView: UIView? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, strong) __kindof UIView *inputView
議論
このプロパティは通常、UITextField と UITextView オブジェクトのため提示されているシステム提供のキーボードを交換するためのビューを提供するために使用されます。
この読み取り専用プロパティの値は nil です。ユーザからの入力を収集するためにカスタムビューを必要とするレスポンダオブジェクトは、読み書きなど、このプロパティを再宣言し、そのカスタム入力ビューを管理するためにそれを使用する必要があります。受信者はファーストレスポンダになると、レスポンダーインフラストラクチャは自動的に指定された入力ビューを提示します。同様に、受信者が、そのファーストレスポンダの状態を放棄するときも、レスポンダーインフラストラクチャは自動的に指定された入力ビューを閉じます。
利用可能
iOS 3.2 以降で利用可能。
以下も見よ
inputViewControllerinputViewController プロパティ
受信者がファーストレスポンダになったときに使用するカスタム入力ビューコントローラ。(読み取り専用)
宣言
<< SWIFT >>
var inputViewController: UIInputViewController? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, strong) UIInputViewController *inputViewController
議論
このプロパティは通常、UITextField と UITextView オブジェクトのため提示されているシステム提供のキーボードを交換するためのビューコントローラーを提供するために使用されます。
この読み取り専用プロパティの値は nil です。アプリ内のシステムキーボードを交換するために、カスタム入力ビューコントローラを提供したい場合は、UIResponder のサブクラスでこのプロパティを読み書き可能として、再宣言して下さい。そうすると、カスタム入力ビューコントローラを管理するには、このプロパティを使用できます。受信者がファーストレスポンダになると、レスポンダーインフラストラクチャは、指定された入力ビューコントローラを自動的に表します。同様に、受信者が、そのファーストレスポンダの状態を放棄するときも、レスポンダーインフラストラクチャは指定された入力ビューコントローラを自動的に閉じます。
利用可能
iOS 8.0 以降で利用可能。
以下も見よ
inputViewinputAccessoryView プロパティ
受信者がファーストレスポンダになったときに表示されるカスタム入力アクセサリビュー。(読み取り専用)
宣言
<< SWIFT >>
var inputAccessoryView: UIView? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, strong) __kindof UIView *inputAccessoryView
議論
このプロパティは通常、UITextField と UITextView オブジェクトのため提示されているシステム提供のキーボードにアクセサリビューを取り付けるために使用されます。
この読み取り専用プロパティの値は nil です。(システムのキーボードのような) システム提供の入力ビューへの、または(inputView プロパティ内で提供する) カスタム入力ビューへのカスタムコントロールを添付したい場合、UIResponder のサブクラス内で読み書き可能として、このプロパティを再宣言して下さい。そうするとカスタムアクセサリビューを管理するには、このプロパティを使用できます。受信者がファーストレスポンダになると、レスポンダーインフラストラクチャは、それを表示する前に適切な入力ビューにアクセサリビューを添付します。
利用可能
iOS 3.2 以降で利用可能。
以下も見よ
inputAccessoryViewControllerinputAccessoryViewController プロパティ
受信者がファーストレスポンダになったときに表示されるカスタム入力アクセサリビューコントローラ。(読み取り専用)
宣言
<< SWIFT >>
var inputAccessoryViewController: UIInputViewController? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, strong) UIInputViewController *inputAccessoryViewController
議論
このプロパティは通常、UITextField と UITextView オブジェクトのため提示されているシステム提供のキーボードにアクセサリビューコントローラを取り付けるために使用されます。
この読み取り専用プロパティの値は nil です。(システムのキーボードのような) システム提供の入力ビューコントローラへの、または( inputViewController プロパティ内で提供する) カスタム入力ビューへのカスタムコントロールを添付したい場合、UIResponder のサブクラスで読み書き可能として、このプロパティを再宣言して下さい。そうするとカスタムアクセサリビューを管理するには、このプロパティを使用できます。受信者がファーストレスポンダになると、レスポンダーインフラストラクチャは、それを表示する前に適切な入力ビューにアクセサリビューを添付します。
利用可能
iOS 8.0 以降で利用可能。
以下も見よ
inputAccessoryView- reloadInputViews
オブジェクトがファーストレスポンダである場合にカスタム入力とアクセサリビューを更新します。
宣言
<< SWIFT >>
func reloadInputViews()
<< OBJECTIVE-C >>
- (void)reloadInputViews
議論
それがファーストレスポンダであるときは、現在のオブジェクトに関連付けられたカスタム入力ビューや入力アクセサリビューをリフレッシュするには、このメソッドを使用できます。ビューは、所定の位置にそれらをアニメーション化することなく、つまり直ちに、置き換えられます。現在のオブジェクトがファーストレスポンダでない場合、このメソッドは効果がありません。
利用可能
iOS 3.2 以降で利用可能。
タッチイベントへのレスポンス
- touchesBegan:withEvent:
1本以上の指がビューまたはウィンドウにタッチダウンした時に、レスポンダに通知します。
宣言
<< SWIFT >>
func touchesBegan(_ touches: Set<UITouch>, withEvent event: UIEvent?)
<< OBJECTIVE-C >>
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
パラメーター
touches | event によって表されるイベントの開まる相のタッチを表す UITouch インスタンスのセット。 |
event | タッチが属するイベントを表すオブジェクト。 |
議論
このメソッドのデフォルト実装は何もしません。しかし、UIResponder、特に UIView の即時 UIKit サブクラスは、レスポンダチェーンの上にメッセージを転送します。次のレスポンダにメッセージを転送するには、super (スーパークラスの実装) にメッセージを送ります。次のレスポンダに直接メッセージを送信してはいけません。例えば、
<< OBJECTIVE-C >>
[super touchesBegan:touches withEvent:event];
super (一般的な使用パターン) を呼び出さずにこのメソッドをオーバーライドする場合は、スタブ(空) としての実装するのみで、タッチイベントを処理するため他のメソッドもオーバーライドする必要があります。
複数のタッチは、デフォルトでは無効になっています。複数のタッチイベントを受信するためには、対応するビュー・インスタンスの multipleTouchEnabled プロパティを YES に設定しなければなりません。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
- touchesMoved:withEvent:
1本以上の指がビューまたはウィンドウ内のイベントの動きに関連したレスポンダに通知します。
宣言
<< SWIFT >>
func touchesMoved(_ touches: Set<UITouch>, withEvent event: UIEvent?)
<< OBJECTIVE-C >>
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
パラメーター
touches | event によって表されるイベント中に移動しているタッチを表す UITouch インスタンスのセット。 |
event | タッチが属するイベントを表すオブジェクト。 |
議論
このメソッドのデフォルト実装は何もしません。しかし、UIResponder、特に UIView の即時 UIKit サブクラスは、レスポンダチェーンの上にメッセージを転送します。次のレスポンダにメッセージを転送するには、super (スーパークラスの実装) にメッセージを送ります。次のレスポンダに直接メッセージを送信してはいけません。例えば、
<< OBJECTIVE-C >>
[super touchesMoved:touches withEvent:event];
複数のタッチは、デフォルトでは無効になっています。複数のタッチイベントを受信するためには、対応するビュー・インスタンスの multipleTouchEnabled プロパティを YES に設定しなければなりません。
super (一般的な使用パターン) を呼び出さずにこのメソッドをオーバーライドする場合は、スタブ(空) としての実装するのみで、タッチイベントを処理するため他のメソッドもオーバーライドする必要があります。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
- touchesEnded:withEvent:
1本以上の指がビューまたはウィンドウから離された時にレスポンダに通知します。
宣言
<< SWIFT >>
func touchesEnded(_ touches: Set<UITouch>, withEvent event: UIEvent?)
<< OBJECTIVE-C >>
- (void)touchesEnded:(NSSet<ITouch *> *)touches withEvent:(UIEvent *)event
パラメーター
touches | event によって表されるイベントの終了相のタッチを表す UITouch インスタンスのセット。 |
event | タッチが属するイベントを表すオブジェクト。 |
議論
このメソッドのデフォルト実装は何もしません。しかし、UIResponder、特に UIView の即時 UIKit サブクラスは、レスポンダチェーンの上にメッセージを転送します。次のレスポンダにメッセージを転送するには、super (スーパークラスの実装) にメッセージを送ります。次のレスポンダに直接メッセージを送信してはいけません。例えば、
<< OBJECTIVE-C >>
[super touchesEnded:touches withEvent:event];
オブジェクトが touchesEnded:withEvent: メッセージを受信した時は、その touchesBegan:withEvent: 実装内で確立された全ての状態情報を片付ける必要があります。
複数のタッチは、デフォルトでは無効になっています。複数のタッチイベントを受信するためには、対応するビュー・インスタンスの multipleTouchEnabled プロパティを YES に設定しなければなりません。
super (一般的な使用パターン) を呼び出さずにこのメソッドをオーバーライドする場合は、スタブ(空) としての実装するのみで、タッチイベントを処理するため他のメソッドもオーバーライドする必要があります。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
- touchesCancelled:withEvent:
システムイベント(低メモリ警告のような) がタッチイベントをキャンセルする時に、レスポンダに送信されます。
宣言
<< SWIFT >>
func touchesCancelled(_ touches: Set<UITouch>?, withEvent event: UIEvent?)
<< OBJECTIVE-C >>
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
パラメーター
touches | event によって表されるイベントの終了相のタッチを表す UITouch インスタンスのセット。 |
event | タッチが属するイベントを表すオブジェクト。 |
議論
ココアタッチフレームワークがタッチイベントのキャンセルを必要とするシステムの中断を受信したときにこのメソッドが呼び出されます。このため、それは UITouchPhaseCancel の相に UITouch オブジェクトを生成します。中断はアプリケーションがもはやアクティブでなくなる何かであり、ウインドウから削除されるビューかもしれません。
オブジェクトが touchesCancelled:withEvent: メッセージを受信した場合、それはその touchesBegan:withEvent: 実装で確立された全ての状態情報を片付ける必要があります。
このメソッドのデフォルト実装は何もしません。しかし、UIResponder、特に UIView の即時 UIKit サブクラスは、レスポンダチェーンの上にメッセージを転送します。次のレスポンダにメッセージを転送するには、super (スーパークラスの実装) にメッセージを送ります。次のレスポンダに直接メッセージを送信してはいけません。例えば、
<< OBJECTIVE-C >>
[super touchesCancelld:touches withEvent:event];
super (一般的な使用パターン) を呼び出さずにこのメソッドをオーバーライドする場合は、スタブ(空) としての実装するのみで、タッチイベントを処理するため他のメソッドもオーバーライドする必要があります。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
- touchesEstimatedPropertiesUpdated:
タッチの推定プロパティが、それらはもはや推定されないように変更されている、または更新がもはや期待されていないときにレスポンダに送信されます。
宣言
<< SWIFT >>
func touchesEstimatedPropertiesUpdated(_ touches: Set<NSObject>)
<< OBJECTIVE-C >>
- (void)touchesEstimatedPropertiesUpdated:(NSSet *)touches
パラメーター
touches | 更新されたプロパティを含む UITouch イベントの配列。 |
議論
iOS 9.1 では、このメソッドは、 touchesBegan:withEvent:, touchesMoved:withEvent: や touchesEnded: withEvent: を通じた見積もりであると以前宣言されたプロパティへの更新を報告するために呼び出され、そこでは estimatedPropertiesExpectingUpdates で設定された少なくとも1つのプロパティを持つことにより更新を期待すると宣言されます。
このメソッドでは、入ってくる更新された状態でタッチの以前の状態を相関させるために estimationUpdateIndex プロパティを使用して下さい。更新された値は、estimatedPropertiesExpectingUpdates のビットマスクでクリア状態を有することによって示されます。ほとんどのプロパティがクリアな estimatedProperties フラグで終わりますが、プロパティは、ハードウェアを考慮すると、推定された状態にとどまることができます。この動作は、クライアントが受信した他のタッチに基づいて、よりドメイン固有の推定値を用いて推定値を、置き換えることを決定できます。
利用可能
iOS 9.1 以降で利用可能。
モーションイベントへのレスポンス
- motionBegan:withEvent:
モーションイベントが開始された事を受信者に通知します。
宣言
<< SWIFT >>
func motionBegan(_ motion: UIEventSubtype, withEvent event: UIEvent?)
<< OBJECTIVE-C >>
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
パラメーター
motion | モーションの種類を示すイベントサブタイプの定数。一般的なモーションは、 UIEventSubtypeMotionShake で示される、シェイクです。 |
event | モーションに関連したイベントを表すオブジェクト。 |
議論
モーションイベントが始まるときと、終了する時だけ、iOS はファーストレスポンダに通知します。例えば、それは個々のシェイクを報告しません。受信オブジェクトは、モーションイベントを受け取るためには、ファーストレスポンダでなければなりません。
このメソッドのデフォルトの実装は何もしません。しかし UIResponder、特に UIView の即時 UIKi tサブクラスは、レスポンダチェーンにメッセージを上に向けます。
利用可能
iOS 3.0 以降で利用可能。
以下も見よ
- motionEnded:withEvent:
モーションイベントが終了した事を受信者に通知します。
宣言
<< SWIFT >>
func motionEnded(_ motion: UIEventSubtype, withEvent event: UIEvent?)
<< OBJECTIVE-C >>
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
パラメーター
motion | モーションの種類を示すイベントサブタイプの定数。一般的なモーションは、 UIEventSubtypeMotionShake で示される、シェイクです。 |
event | モーションに関連したイベントを表すオブジェクト。 |
議論
モーションイベントが始まるときと、終了する時だけ、iOS はレスポンダに通知します。例えば、それは個々のシェイクを報告しません。
このメソッドのデフォルトの実装は何もしません。しかし UIResponder、特に UIView の即時 UIKi tサブクラスは、レスポンダチェーンにメッセージを上に向けます。
利用可能
iOS 3.0 以降で利用可能。
以下も見よ
- motionCancelled:withEvent:
モーションイベントがキャンセルされた事を受信者に通知します。
宣言
<< SWIFT >>
func motionCancelled(_ motion: UIEventSubtype, withEvent event: UIEvent?)
<< OBJECTIVE-C >>
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
パラメーター
motion | event に関連するモーションの種類を示すイベントサブタイプ定数。一般的なモーションは UIEventSubtypeMotionShake で示される、シェイクです。 |
event | モーションに関連したイベントを表すオブジェクト。 |
議論
ココアタッチフレームワークがモーションイベントのキャンセルを要求する割り込みを受信したときにこのメソッドが呼び出されます。この中断は、アプリケーションがもはやアクティブでないか、ウィンドウから削除されるビューであるような可能性があります。シェイクが長すぎる時も、このメソッドが呼び出される事があります。モーションイベントを処理するすべてのレスポンダは、このメソッドを実装する必要があります。その中でそれらは motionBegan:withEvent: 実装で確立された全ての状態情報を片付ける必要があります。
このメソッドのデフォルトの実装は何もしません。しかし UIResponder、特に UIView の即時 UIKit サブクラスは、レスポンダチェーンにメッセージを上に向けます。
利用可能
iOS 3.0 以降で利用可能。
以下も見よ
プレスイベントへのレスポンス
一般的に、カスタムプレスの処理を実行するすべてのレスポンダは、これら4つのメソッドを全てオーバーライドする必要があります。pressesBegan:withEvent: メソッド、あなたのレスポンダの pressesEnded:withEvent: または pressesCancelled:withEvent: メソッドへの各呼び出しが行われます。pressesChanged:withEvent:
訳註: 本文は何らかのミスにより中途半端に終わっています。
- pressesBegan:withEvent:
関連付けられたビューで物理的なボタンが押された時に、受信者に送信されます。
宣言
<< SWIFT >>
func pressesBegan(_ presses: Set<UIPress>, withEvent event: UIPressesEvent?)
<< OBJECTIVE-C >>
- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event
パラメーター
presses | UIPressPhaseBegan 相でタッチを表す event によって表されるイベント内の UIPress インスタンスのセット。 |
event | プレスが属するイベントを表す UIPressesEvent オブジェクト。 |
利用可能
iOS 9.0 以降で利用可能。
- pressesCancelled:withEvent:
システムイベント(低メモリの警告のような) がプレスイベントをキャンセルする時、受信者に送信されます。
宣言
<< SWIFT >>
func pressesCancelled(_ presses: Set<UIPress>, withEvent event: UIPressesEvent?)
<< OBJECTIVE-C >>
- (void)pressesCancelled:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event
パラメーター
presses | UIPressPhaseBegan 相でタッチを表す event によって表されるイベント内の UIPress インスタンスのセット。 |
event | プレスが属するイベントを表す UIPressesEvent オブジェクト。 |
議論
あなたのアプリが他のプレスイベントを処理する場合は、キャンセルされたプレスイベントも処理する必要があります。これを怠ると、不正な動作やクラッシュにつながる可能性が非常に高いです。
利用可能
iOS 9.0 以降で利用可能。
- pressesChanged:withEvent:
プレスの force が、関連するビューで変更された時、受信者に送信されます。
宣言
<< SWIFT >>
func pressesChanged(_ presses: Set<UIPress>, withEvent event: UIPressesEvent?)
<< OBJECTIVE-C >>
- (void)pressesChanged:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event
パラメーター
presses | UIPressPhaseBegan 相でタッチを表す event によって表されるイベント内の UIPress インスタンスのセット。 |
event | プレスが属するイベントを表す UIPressesEvent オブジェクト。 |
議論
親指スティックやアナログプッシュボタンのような、アナログ値を提供するプレスで pressesChanged:withEvent: メソッドは呼び出されます。
利用可能
iOS 9.0 以降で利用可能。
- pressesEnded:withEvent:
関連付けられたビューからボタンが放されたときに受信者に送信されます。
宣言
<< SWIFT >>
func pressesEnded(_ presses: Set<UIPress>, withEvent event: UIPressesEvent?)
<< OBJECTIVE-C >>
- (void)pressesEnded:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event
パラメーター
presses | UIPressPhaseBegan 相でタッチを表す event によって表されるイベント内の UIPress インスタンスのセット。 |
event | プレスが属するイベントを表す UIPressesEvent オブジェクト。 |
利用可能
iOS 9.0 以降で利用可能。
リモートコントロールイベントへのレスポンス
- remoteControlReceivedWithEvent:
宣言
<< SWIFT >>
func remoteControlReceivedWithEvent(_ event: UIEvent?)
<< OBJECTIVE-C >>
- (void)remoteControlReceivedWithEvent:(UIEvent *)event
パラメーター
event | リモート制御コマンドをカプセル化するイベントオブジェクト。リモートコントロールイベントは、UIEventTypeRemoteControl の型を持っています。 |
議論
リモートコントロールイベントは、ヘッドセットを含む外部アクセサリーからコマンドとして発信します。アプリケーションは、ユーザに提示されるオーディオまたはビデオメディアを制御することにより、これらのコマンドに応答します。受信レスポンダオブジェクトは、目的のコマンドを決定するために、イベントの subtype を調べる必要があり、例えば再生(UIEventSubtypeRemoteControlPlay) と、それに応じて進行します。
リモートコントロールイベントの配信を許可するためには、UIApplication の beginReceivingRemoteControlEvents メソッドを呼び出さなければならず、リモートコントロールイベントの配信を止めるには、endReceivingRemoteControlEvents を呼び出します。
利用可能
iOS 4.0 以降で利用可能。
Undo マネージャの取得
undoManager プロパティ
レスポンダチェーン内の最も近い共有アンドゥ(Undo) マネージャを返します。(読み取り専用)
宣言
<< SWIFT >>
var undoManager: NSUndoManager? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) NSUndoManager *undoManager
議論
デフォルトでは、アプリケーションのすべてのウィンドウは、アンドゥマネージャを持っています。それは、取り消し、やり直しの操作を管理するための共有オブジェクトです。しかし、レスポンダチェーン内の全てのオブジェクトのクラスは、独自のカスタムアンドゥマネージャを持つことができます。(例えば、UITextField のインスタンスは、テキストフィールドが、ファーストレスポンダの状態を辞任するときにクリアされる、独自のアンドゥマネージャを持っています。) あなたがアンドゥマネージャを要求すると、要求がレスポンダチェーンを上がって行き、UIWindow オブジェクトは、使用可能なインスタンスを返します。
管理ビューへの、アンドゥおよびやり直しの、ローカル操作をするためにあなたのビューコントローラにアンドゥマネージャーを追加できます。
利用可能
iOS 3.0 以降で利用可能。
コマンドの検証
- canPerformAction:withSender:
ユーザーインターフェイスで指定されたコマンドを有効または無効にするために、受信レスポンダに要求します。
宣言
<< SWIFT >>
func canPerformAction(_ action: Selector, withSender sender: AnyObject?) -> Bool
<< OBJECTIVE-C >>
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
パラメーター
action | コマンドに関連付けられたメソッドを識別するセレクタ。編集メニューでは、これは、UIResponderStandardEditActions 非公式プロトコル(例えば copy) で宣言された編集メソッドの1つです。 |
sender | このメソッドを呼び出しているオブジェクト。編集メニューのコマンドの場合、これは共有された UIApplication オブジェクトです。文脈に応じて、コマンドを有効にする必要があるかどうかを判断するために役立つ情報について、送信者に照会できます。 |
戻り値
action によって識別されるコマンドを有効にする必要がある場合は YES 、それを無効にする必要がある場合は NO。YES を返すのは、クラスが現在のコンテキストでコマンドを処理できることを意味します。
議論
レスポンダクラスが、要求されたアクションを実装し、そうでない場合は、次のレスポンダを呼び出す場合、このメソッドのこのデフォルトの実装では、YES を返します。サブクラスは、現在の状態に基づいてメニューコマンドを有効にするには、このメソッドをオーバーライドできます。例えば、選択がある場合、Copy コマンドを有効にし、ペーストボードが正しいペーストボードの表現型でデータを含んでいなかった場合、Paste コマンドを使用不可にします。レスポンダチェーン内のレスポンダが全て YES を返さない場合は、メニューコマンドは無効になります。あなたのクラスが、コマンドで NO を返す場合、さらにレスポンダチェーンを登り、別のレスポンダがまだ YES を返し、コマンドを有効にすることに注意してください。
このメソッドは、毎回同じアクション、別の送信者で複数回呼び出されることがあります。nil を含めて、送信者の全ての種類のために準備するべきです。
編集メニューの詳細については、UIMenuController クラスの説明を参照してください。
利用可能
iOS 3.0 以降で利用可能。
- targetForAction:withSender:
アクションに応答するターゲットオブジェクトを返します。
宣言
<< SWIFT >>
func targetForAction(_ action: Selector, withSender sender: AnyObject?) -> AnyObject?
<< OBJECTIVE-C >>
- (id)targetForAction:(SEL)action withSender:(id)sender
パラメーター
action | コマンドに関連付けられたメソッドを識別するセレクタ。 |
sender | このメソッドを呼び出すオブジェクト。編集メニューのコマンドの場合、これは共有された UIApplication オブジェクトです。文脈に応じて、情報が、コマンドのターゲットを決定するのを助けるか、送信者に照会できます。 |
戻り値
そのアクションメソッドが、コマンドを実行するために呼び出されるオブジェクト。
議論
このメソッドは、アクションがオブジェクトによって呼び出される必要があるときにいつでも呼び出されます。デフォルトの実装は canPerformAction:withSender: メソッドを呼び出し、それがアクションを呼び出せるかどうかを判断します。オブジェクトがアクションを呼び出せるなら、それは自分自身を返し、それ以外の場合は、レスポンダチェーンアップを登ることの要求を渡します。それは、ターゲットが選択される方法を上書きしたい場合は、アプリはこのメソッドをオーバーライドする必要があります。
利用可能
iOS 7.0 以降で利用可能。
利用可能なキーコマンドへのアクセス
keyCommands プロパティ
このレスポンダ上のアクションをトリガーするキーコマンド。(読み取り専用)
宣言
<< SWIFT >>
var keyCommands: [UIKeyCommand]? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) NSArray <UIKeyCommand *> *keyCommands
議論
ハードウェアキーボードコマンドをサポートするレスポンダオブジェクトは、このプロパティを再定義し、それがサポートしている UIKeyCommand オブジェクトの配列を返すためにそれを使用できます。各キーコマンドオブジェクトは、認識するためのキーボードシークエンスおよび応答で呼ばれるレスポンダのアクションメソッドを表します。
このメソッドから返されるキーコマンドは、全体のレスポンダチェーンに適用されます。キーコンビネーションが、キーコマンドオブジェクトに一致して押されると、UIKit は、対応するアクションメソッドを実装するオブジェクトを探してレスポンダチェーンを歩きます。これは、最初に見つかったオブジェクト上でそのメソッドを呼び出し、イベント処理を停止します。
利用可能
iOS 7.0 以降で利用可能。
テキスト入力モードの管理
textInputMode プロパティ
このレスポンダオブジェクトのテキスト入力モード。(読み取り専用)
宣言
<< SWIFT >>
var textInputMode: UITextInputMode? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, strong) UITextInputMode *textInputMode
議論
テキスト入力モードは、言語と、このレスポンダがアクティブなとき表示されるキーボードをを識別します。
レスポンダの場合、システムは正常にユーザーの言語設定に基づいて、キーボードを表示します。このプロパティを再定義し、レスポンダに特定のキーボードを使用させたい場合には異なるテキスト入力モードを返すためにそれを使用できます。ユーザは、レスポンダがアクティブである間、まだキーボードを変更できますが、別のレスポンダに切り替え、指定したキーボードを復元できます。
利用可能
iOS 7.0 以降で利用可能。
以下も見よ
textInputContextIdentifiertextInputContextIdentifier プロパティ
レスポンダがそのテキスト入力モード情報を保持する必要があることを示す識別子。(読み取り専用)
宣言
<< SWIFT >>
var textInputContextIdentifier: String? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, strong) NSString *textInputContextIdentifier
議論
このプロパティを再定義し、文字列値を返す場合、UIKit はレスポンダの現在のテキスト入力モードを追跡します。トラッキングモードにある間、あなたがテキスト入力モードに加えたプログラムの変更は記憶され、レスポンダ側がアクティブになるといつでも復元されます。
利用可能
iOS 7.0 以降で利用可能。
+ clearTextInputContextIdentifier:
アプリのユーザデフォルトからテキスト入力モード情報を消去します。
宣言
<< SWIFT >>
class func clearTextInputContextIdentifier(_ identifier: String)
<< OBJECTIVE-C >>
+ (void)clearTextInputContextIdentifier:(NSString *)identifier
パラメーター
identifier | あなたのレスポンダの一つの textInputContextIdentifier プロパティに割り当てられた識別子。 |
議論
このメソッドを呼び出すと、アプリのユーザデフォルトから、指定された識別子に関連付けられた全てのテキスト入力モード情報を削除します。この情報を削除すると、レスポンダに再びデフォルトのテキスト入力モードを使用させます。
利用可能
iOS 7.0 以降で利用可能。
inputAssistantItem プロパティ
キーボードのショートカットバーを構成するときに使用する入力アシスタント。(読み取り専用)
宣言
<< SWIFT >>
var inputAssistantItem: UITextInputAssistantItem { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, strong) UITextInputAssistantItem *inputAssistantItem
議論
iPad では、キーボードの上のショートカットバーはタイピングの提案や、カット、コピー、ペーストコマンドのようなテキストを管理するための他のコントロールを含んでいます。このプロパティは、あなたがショートカットバーに含めたいカスタムバーボタン項目を構成するために使用する、テキスト入力アシスタント項目を含んでいます。ショートカットバーは、iPhone や iPod Touch では利用できません。
利用可能
iOS 9.0 以降で利用可能。
ユーザアクティビティのサポート
userActivity プロパティ
このレスポンダがサポートしているユーザアクティビティをカプセル化するオブジェクト。
宣言
<< SWIFT >>
var userActivity: NSUserActivity?
<< OBJECTIVE-C >>
@property(nonatomic, strong) NSUserActivity *userActivity
議論
レスポンダに上の userActivity プロパティを設定することにより、NSUserActivity オブジェクトは、UIKit が管理するようになります。UIKit によって管理されるユーザアクティビティは適切な時間に自動的に保存されます。あなたは updateUserActivityState: のオーバーライドを介してユーザアクティビティを表す状態データを遅滞して追加できます。複数のレスポンダは、それらがすべて updateUserActivityState: 呼び出しを取得する場合には、単一の NSUserActivity インスタンスを共有できます。
注意: 関連するすべてのオブジェクト上の updateUserActivity: を呼び出す前に、NSUserActivity オブジェクトの userInfo 辞書がクリアされます。
それがもはや参加することを望んでいない場合、レスポンダオブジェクトはその userActivity プロパティを nil に設定できます。UIKit によって管理される、全ての NSUserActivity オブジェクトは、しかし関連するレスポンダ(またはドキュメント) が自動的に無効化されています。
利用可能
iOS 8.0 以降で利用可能。
以下も見よ
- restoreUserActivityState:
与えられたユーザアクティビティを継続するために必要な状態を復元します。
宣言
<< SWIFT >>
func restoreUserActivityState(_ activity: NSUserActivity)
<< OBJECTIVE-C >>
- (void)restoreUserActivityState:(NSUserActivity *)activity
パラメーター
activity | 継続すべきユーザアクティビティ。 |
議論
サブクラスは、与えられたユーザーアクティビティでレスポンダの状態を復元するには、このメソッドをオーバーライドします。システムは、application: continueUserActivity: restorationHandler: に与えられた復元ハンドラに渡された全てのオブジェクト上でそれを呼び出します。オーバーライドは、オブジェクトを復元するために、与えられたユーザアクティビティの userInfo 辞書に含まれている状態データを使用する必要があります。
アプリのデリゲートが復元ハンドラを使用しないことを選択した場合にも、このメソッドを直接呼び出すことができます。
利用可能
iOS 8.0 以降で利用可能。
以下も見よ
- updateUserActivityState:
与えられたユーザアクティビティの状態を更新します。
宣言
<< SWIFT >>
func updateUserActivityState(_ activity: NSUserActivity)
<< OBJECTIVE-C >>
- (void)updateUserActivityState:(NSUserActivity *)activity
パラメーター
activity | 更新するべきユーザアクティビティ。 |
議論
サブクラスが、与えられたユーザーアクティビティの状態を更新するには、このメソッドをオーバーライドします。その addUserInfoEntriesFromDictionary: メソッドを使用して、NSUserActivity オブジェクトにユーザアクティビティを表す状態を追加する必要があります。状態が汚れているときは、NSUserActivity の needsSave プロパティを YES に設定する必要があり、このメソッドは、適切な時点で呼び出されます。
UIKit が管理している NSUserActivity オブジェクトが更新されると、空の UserInfo 辞書が NSUserActivity オブジェクトに与えられ、NSUserActivity に関連付けられているすべてのオブジェクトは、その後 updateUserActivityState: メッセージを送信されます。
利用可能
iOS 8.0 以降で利用可能。
以下も見よ
次の章