UIResponder


継承:NSObject(Class)

従属:NSObject(Protocol)

フレームワーク: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 では、UIResponderremoteControlReceivedWithEvent: メソッドをリモートコントロールイベントを処理するためにを追加しました。





タスク


レスポンダチェーンの管理


- nextResponder


受信者の次のレスポンダ、それがなければ nil を返します。


宣言

<< SWIFT >>

func nextResponder() -> UIResponder?


<< OBJECTIVE-C >>

- (UIResponder *)nextResponder


戻り値

レスポンダチェーンの次のオブジェクトを、処理するためのイベントを提示します。


議論

UIResponder クラスは、デフォルトでは nil を返す代わりに、自動的に保存したり、次のレスポンダを設定しません。サブクラスは次のレスポンダを設定するために、このメソッドをオーバーライドする必要があります。UIView は、(もしあれば) それを管理する UIViewController オブジェクトを返し、あるいは(そうでない場合は) そのスーパービューを返してこのメソッドを実装します。UIViewController は、そのビューのスーパービューを返すことでメソッドを実装します。UIWindow は、アプリケーションオブジェクトを返し、UIApplicationnil を返します。


利用可能

iOS 2.0 以降で利用可能。


以下も見よ

– isFirstResponder





– isFirstResponder


受信者がファーストレスポンダであるかどうかを示すブール値を返します。


宣言

<< SWIFT >>

func isFirstResponder() -> Bool


<< OBJECTIVE-C >>

- (BOOL)isFirstResponder


戻り値

受信機者がファーストレスポンダである場合 YES、それ以外の場合 NO


利用可能

iOS 2.0 以降で利用可能。


以下も見よ

– becomeFirstResponder

– resignFirstResponder





- canBecomeFirstResponder


受信しゃがファーストレスポンダになれるかどうかを示すブール値を返します。


宣言

<< SWIFT >>

func canBecomeFirstResponder() -> Bool


<< OBJECTIVE-C >>

- (BOOL)canBecomeFirstResponder


戻り値

受信機者がファーストレスポンダになれる場合 YES、それ以外の場合 NO


議論

デフォルトでは NO を返します。レスポンダオブジェクトが、このメソッドから YES を返した場合は、それはファーストレスポンダになり、タッチイベントやアクションメッセージを受け取ることができます。サブクラスは、ファーストレスポンダになることができるように、このメソッドをオーバーライドしなければなりません。


現在、ビュー階層に接続されていないビューにこのメッセージを送信してはなりません。結果は未定義です。


利用可能

iOS 2.0 以降で利用可能。


以下も見よ

– becomeFirstResponder





– 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


議論

このプロパティは通常、UITextFieldUITextView オブジェクトのため提示されているシステム提供のキーボードを交換するためのビューを提供するために使用されます。


この読み取り専用プロパティの値は nil です。ユーザからの入力を収集するためにカスタムビューを必要とするレスポンダオブジェクトは、読み書きなど、このプロパティを再宣言し、そのカスタム入力ビューを管理するためにそれを使用する必要があります。受信者はファーストレスポンダになると、レスポンダーインフラストラクチャは自動的に指定された入力ビューを提示します。同様に、受信者が、そのファーストレスポンダの状態を放棄するときも、レスポンダーインフラストラクチャは自動的に指定された入力ビューを閉じます。


利用可能

iOS 3.2 以降で利用可能。


以下も見よ

inputViewController




inputViewController プロパティ


受信者がファーストレスポンダになったときに使用するカスタム入力ビューコントローラ。(読み取り専用)


宣言

<< SWIFT >>

var inputViewController: UIInputViewController? { get }


<< OBJECTIVE-C >>

@property(nonatomic, readonly, strong) UIInputViewController *inputViewController


議論

このプロパティは通常、UITextFieldUITextView オブジェクトのため提示されているシステム提供のキーボードを交換するためのビューコントローラーを提供するために使用されます。


この読み取り専用プロパティの値は nil です。アプリ内のシステムキーボードを交換するために、カスタム入力ビューコントローラを提供したい場合は、UIResponder のサブクラスでこのプロパティを読み書き可能として、再宣言して下さい。そうすると、カスタム入力ビューコントローラを管理するには、このプロパティを使用できます。受信者がファーストレスポンダになると、レスポンダーインフラストラクチャは、指定された入力ビューコントローラを自動的に表します。同様に、受信者が、そのファーストレスポンダの状態を放棄するときも、レスポンダーインフラストラクチャは指定された入力ビューコントローラを自動的に閉じます。


利用可能

iOS 8.0 以降で利用可能。


以下も見よ

inputView




inputAccessoryView プロパティ


受信者がファーストレスポンダになったときに表示されるカスタム入力アクセサリビュー。(読み取り専用)


宣言

<< SWIFT >>

var inputAccessoryView: UIView? { get }


<< OBJECTIVE-C >>

@property(nonatomic, readonly, strong) __kindof UIView *inputAccessoryView


議論

このプロパティは通常、UITextFieldUITextView オブジェクトのため提示されているシステム提供のキーボードにアクセサリビューを取り付けるために使用されます。


この読み取り専用プロパティの値は nil です。(システムのキーボードのような) システム提供の入力ビューへの、または(inputView プロパティ内で提供する) カスタム入力ビューへのカスタムコントロールを添付したい場合、UIResponder のサブクラス内で読み書き可能として、このプロパティを再宣言して下さい。そうするとカスタムアクセサリビューを管理するには、このプロパティを使用できます。受信者がファーストレスポンダになると、レスポンダーインフラストラクチャは、それを表示する前に適切な入力ビューにアクセサリビューを添付します。


利用可能

iOS 3.2 以降で利用可能。


以下も見よ

inputAccessoryViewController




inputAccessoryViewController プロパティ


受信者がファーストレスポンダになったときに表示されるカスタム入力アクセサリビューコントローラ。(読み取り専用)


宣言

<< SWIFT >>

var inputAccessoryViewController: UIInputViewController? { get }


<< OBJECTIVE-C >>

@property(nonatomic, readonly, strong) UIInputViewController *inputAccessoryViewController


議論

このプロパティは通常、UITextFieldUITextView オブジェクトのため提示されているシステム提供のキーボードにアクセサリビューコントローラを取り付けるために使用されます。


この読み取り専用プロパティの値は 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


パラメーター

touchesevent によって表されるイベントの開まる相のタッチを表す UITouch インスタンスのセット。
eventタッチが属するイベントを表すオブジェクト。

議論

このメソッドのデフォルト実装は何もしません。しかし、UIResponder、特に UIView の即時 UIKit サブクラスは、レスポンダチェーンの上にメッセージを転送します。次のレスポンダにメッセージを転送するには、super (スーパークラスの実装) にメッセージを送ります。次のレスポンダに直接メッセージを送信してはいけません。例えば、


<< OBJECTIVE-C >>

[super touchesBegan:touches withEvent:event];


super (一般的な使用パターン) を呼び出さずにこのメソッドをオーバーライドする場合は、スタブ(空) としての実装するのみで、タッチイベントを処理するため他のメソッドもオーバーライドする必要があります。


複数のタッチは、デフォルトでは無効になっています。複数のタッチイベントを受信するためには、対応するビュー・インスタンスの multipleTouchEnabled プロパティを YES に設定しなければなりません。


利用可能

iOS 2.0 以降で利用可能。


以下も見よ

– touchesMoved:withEvent:

– touchesEnded:withEvent:

– touchesCancelled:withEvent:





- touchesMoved:withEvent:


1本以上の指がビューまたはウィンドウ内のイベントの動きに関連したレスポンダに通知します。


宣言

<< SWIFT >>

func touchesMoved(_ touches: Set<UITouch>,
        withEvent event: UIEvent?)


<< OBJECTIVE-C >>

- (void)touchesMoved:(NSSet<UITouch *> *)touches
           withEvent:(UIEvent *)event


パラメーター

touchesevent によって表されるイベント中に移動しているタッチを表す UITouch インスタンスのセット。
eventタッチが属するイベントを表すオブジェクト。

議論

このメソッドのデフォルト実装は何もしません。しかし、UIResponder、特に UIView の即時 UIKit サブクラスは、レスポンダチェーンの上にメッセージを転送します。次のレスポンダにメッセージを転送するには、super (スーパークラスの実装) にメッセージを送ります。次のレスポンダに直接メッセージを送信してはいけません。例えば、


<< OBJECTIVE-C >>

[super touchesMoved:touches withEvent:event];


複数のタッチは、デフォルトでは無効になっています。複数のタッチイベントを受信するためには、対応するビュー・インスタンスの multipleTouchEnabled プロパティを YES に設定しなければなりません。


super (一般的な使用パターン) を呼び出さずにこのメソッドをオーバーライドする場合は、スタブ(空) としての実装するのみで、タッチイベントを処理するため他のメソッドもオーバーライドする必要があります。


利用可能

iOS 2.0 以降で利用可能。


以下も見よ

– touchesBegan:withEvent:

– touchesEnded:withEvent:

– touchesCancelled:withEvent:





- touchesEnded:withEvent:


1本以上の指がビューまたはウィンドウから離された時にレスポンダに通知します。


宣言

<< SWIFT >>

func touchesEnded(_ touches: Set<UITouch>,
        withEvent event: UIEvent?)


<< OBJECTIVE-C >>

- (void)touchesEnded:(NSSet<ITouch *> *)touches
           withEvent:(UIEvent *)event


パラメーター

touchesevent によって表されるイベントの終了相のタッチを表す UITouch インスタンスのセット。
eventタッチが属するイベントを表すオブジェクト。

議論

このメソッドのデフォルト実装は何もしません。しかし、UIResponder、特に UIView の即時 UIKit サブクラスは、レスポンダチェーンの上にメッセージを転送します。次のレスポンダにメッセージを転送するには、super (スーパークラスの実装) にメッセージを送ります。次のレスポンダに直接メッセージを送信してはいけません。例えば、


<< OBJECTIVE-C >>

[super touchesEnded:touches withEvent:event];


オブジェクトが touchesEnded:withEvent: メッセージを受信した時は、その touchesBegan:withEvent: 実装内で確立された全ての状態情報を片付ける必要があります。


複数のタッチは、デフォルトでは無効になっています。複数のタッチイベントを受信するためには、対応するビュー・インスタンスの multipleTouchEnabled プロパティを YES に設定しなければなりません。


super (一般的な使用パターン) を呼び出さずにこのメソッドをオーバーライドする場合は、スタブ(空) としての実装するのみで、タッチイベントを処理するため他のメソッドもオーバーライドする必要があります。


利用可能

iOS 2.0 以降で利用可能。


以下も見よ

– touchesBegan:withEvent:

– touchesMoved:withEvent:

– touchesCancelled:withEvent:





- touchesCancelled:withEvent:


システムイベント(低メモリ警告のような) がタッチイベントをキャンセルする時に、レスポンダに送信されます。


宣言

<< SWIFT >>

func touchesCancelled(_ touches: Set<UITouch>?,
            withEvent event: UIEvent?)


<< OBJECTIVE-C >>

- (void)touchesCancelled:(NSSet<UITouch *> *)touches
               withEvent:(UIEvent *)event


パラメーター

touchesevent によって表されるイベントの終了相のタッチを表す UITouch インスタンスのセット。
eventタッチが属するイベントを表すオブジェクト。

議論

ココアタッチフレームワークがタッチイベントのキャンセルを必要とするシステムの中断を受信したときにこのメソッドが呼び出されます。このため、それは UITouchPhaseCancel の相に UITouch オブジェクトを生成します。中断はアプリケーションがもはやアクティブでなくなる何かであり、ウインドウから削除されるビューかもしれません。


オブジェクトが touchesCancelled:withEvent: メッセージを受信した場合、それはその touchesBegan:withEvent: 実装で確立された全ての状態情報を片付ける必要があります。


このメソッドのデフォルト実装は何もしません。しかし、UIResponder、特に UIView の即時 UIKit サブクラスは、レスポンダチェーンの上にメッセージを転送します。次のレスポンダにメッセージを転送するには、super (スーパークラスの実装) にメッセージを送ります。次のレスポンダに直接メッセージを送信してはいけません。例えば、


<< OBJECTIVE-C >>

[super touchesCancelld:touches withEvent:event];


super (一般的な使用パターン) を呼び出さずにこのメソッドをオーバーライドする場合は、スタブ(空) としての実装するのみで、タッチイベントを処理するため他のメソッドもオーバーライドする必要があります。


利用可能

iOS 2.0 以降で利用可能。


以下も見よ

– touchesBegan:withEvent:

– touchesMoved:withEvent:

– touchesEnded:withEvent:





- 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:

– motionCancelled:withEvent:





- 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 以降で利用可能。


以下も見よ

– motionBegan:withEvent:

– motionCancelled:withEvent:





- motionCancelled:withEvent:


モーションイベントがキャンセルされた事を受信者に通知します。


宣言

<< SWIFT >>

func motionCancelled(_ motion: UIEventSubtype,
           withEvent event: UIEvent?)


<< OBJECTIVE-C >>

- (void)motionCancelled:(UIEventSubtype)motion
              withEvent:(UIEvent *)event


パラメーター

motionevent に関連するモーションの種類を示すイベントサブタイプ定数。一般的なモーションは UIEventSubtypeMotionShake で示される、シェイクです。
eventモーションに関連したイベントを表すオブジェクト。

議論

ココアタッチフレームワークがモーションイベントのキャンセルを要求する割り込みを受信したときにこのメソッドが呼び出されます。この中断は、アプリケーションがもはやアクティブでないか、ウィンドウから削除されるビューであるような可能性があります。シェイクが長すぎる時も、このメソッドが呼び出される事があります。モーションイベントを処理するすべてのレスポンダは、このメソッドを実装する必要があります。その中でそれらは motionBegan:withEvent: 実装で確立された全ての状態情報を片付ける必要があります。


このメソッドのデフォルトの実装は何もしません。しかし UIResponder、特に UIView の即時 UIKit サブクラスは、レスポンダチェーンにメッセージを上に向けます。


利用可能

iOS 3.0 以降で利用可能。


以下も見よ

– motionBegan:withEvent:

– motionEnded:withEvent:





プレスイベントへのレスポンス


一般的に、カスタムプレスの処理を実行するすべてのレスポンダは、これら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


パラメーター

pressesUIPressPhaseBegan 相でタッチを表す 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


パラメーター

pressesUIPressPhaseBegan 相でタッチを表す 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


パラメーター

pressesUIPressPhaseBegan 相でタッチを表す 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


パラメーター

pressesUIPressPhaseBegan 相でタッチを表す event によって表されるイベント内の UIPress インスタンスのセット。
eventプレスが属するイベントを表す UIPressesEvent オブジェクト。

利用可能

iOS 9.0 以降で利用可能。





リモートコントロールイベントへのレスポンス


- remoteControlReceivedWithEvent:


宣言

<< SWIFT >>

func remoteControlReceivedWithEvent(_ event: UIEvent?)


<< OBJECTIVE-C >>

- (void)remoteControlReceivedWithEvent:(UIEvent *)event


パラメーター

eventリモート制御コマンドをカプセル化するイベントオブジェクト。リモートコントロールイベントは、UIEventTypeRemoteControl の型を持っています。

議論

リモートコントロールイベントは、ヘッドセットを含む外部アクセサリーからコマンドとして発信します。アプリケーションは、ユーザに提示されるオーディオまたはビデオメディアを制御することにより、これらのコマンドに応答します。受信レスポンダオブジェクトは、目的のコマンドを決定するために、イベントの subtype を調べる必要があり、例えば再生(UIEventSubtypeRemoteControlPlay) と、それに応じて進行します。


リモートコントロールイベントの配信を許可するためには、UIApplicationbeginReceivingRemoteControlEvents メソッドを呼び出さなければならず、リモートコントロールイベントの配信を止めるには、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 、それを無効にする必要がある場合は NOYES を返すのは、クラスが現在のコンテキストでコマンドを処理できることを意味します。


議論

レスポンダクラスが、要求されたアクションを実装し、そうでない場合は、次のレスポンダを呼び出す場合、このメソッドのこのデフォルトの実装では、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 以降で利用可能。


以下も見よ

textInputContextIdentifier




textInputContextIdentifier プロパティ


レスポンダがそのテキスト入力モード情報を保持する必要があることを示す識別子。(読み取り専用)


宣言

<< 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:

– updateUserActivityState:





- restoreUserActivityState:


与えられたユーザアクティビティを継続するために必要な状態を復元します。


宣言

<< SWIFT >>

func restoreUserActivityState(_ activity: NSUserActivity)


<< OBJECTIVE-C >>

- (void)restoreUserActivityState:(NSUserActivity *)activity


パラメーター

activity継続すべきユーザアクティビティ。

議論

サブクラスは、与えられたユーザーアクティビティでレスポンダの状態を復元するには、このメソッドをオーバーライドします。システムは、application: continueUserActivity: restorationHandler: に与えられた復元ハンドラに渡された全てのオブジェクト上でそれを呼び出します。オーバーライドは、オブジェクトを復元するために、与えられたユーザアクティビティの userInfo 辞書に含まれている状態データを使用する必要があります。


アプリのデリゲートが復元ハンドラを使用しないことを選択した場合にも、このメソッドを直接呼び出すことができます。


利用可能

iOS 8.0 以降で利用可能。


以下も見よ

userActivity

– updateUserActivityState:





- updateUserActivityState:


与えられたユーザアクティビティの状態を更新します。


宣言

<< SWIFT >>

func updateUserActivityState(_ activity: NSUserActivity)


<< OBJECTIVE-C >>

- (void)updateUserActivityState:(NSUserActivity *)activity


パラメーター

activity更新するべきユーザアクティビティ。

議論

サブクラスが、与えられたユーザーアクティビティの状態を更新するには、このメソッドをオーバーライドします。その addUserInfoEntriesFromDictionary: メソッドを使用して、NSUserActivity オブジェクトにユーザアクティビティを表す状態を追加する必要があります。状態が汚れているときは、NSUserActivityneedsSave プロパティを YES に設定する必要があり、このメソッドは、適切な時点で呼び出されます。


UIKit が管理している NSUserActivity オブジェクトが更新されると、空の UserInfo 辞書が NSUserActivity オブジェクトに与えられ、NSUserActivity に関連付けられているすべてのオブジェクトは、その後 updateUserActivityState: メッセージを送信されます。


利用可能

iOS 8.0 以降で利用可能。


以下も見よ

userActivity

– restoreUserActivityState:





次の章
目次
Xcode の新機能

  • UIResponder
  • 概観
  • タスク
  • レスポンダチェーンの管理
  • nextResponder
    isFirstResponder
    canBecomeFirstResponder
    becomeFirstResponder
    canResignFirstResponder
    resignFirstResponder
  • 入力ビューの管理
  • inputView プロパティ
    inputViewController プロパティ
    inputAccessoryView プロパティ
    inputAccessoryViewController プロパティ
    reloadInputViews
  • タッチイベントへのレスポンス
  • touchesBegan:withEvent:
    touchesMoved:withEvent:
    touchesEnded:withEvent:
    touchesCancelled:withEvent:
    touchesEstimatedPropertiesUpdated:
  • モーションイベントへのレスポンス
  • motionBegan:withEvent:
    motionEnded:withEvent:
    motionCancelled:withEvent:
  • プレスイベントへのレスポンス
  • pressesBegan:withEvent:
    pressesCancelled:withEvent:
    pressesChanged:withEvent:
    pressesEnded:withEvent:
  • リモートコントロールイベントへのレスポンス
  • remoteControlReceivedWithEvent:
  • Undo マネージャの取得
  • undoManager プロパティ
  • コマンドの検証
  • canPerformAction:withSender:
    targetForAction:withSender:
  • 利用可能なキーコマンドへのアクセス
  • keyCommands プロパティ
  • テキスト入力モードの管理
  • textInputMode プロパティ
    textInputContextIdentifier プロパティ
    clearTextInputContextIdentifier:
    inputAssistantItem プロパティ
  • ユーザアクティビティのサポート
  • userActivity プロパティ
    restoreUserActivityState:
    updateUserActivityState:
    文書改定履歴












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)












    トップへ(UIResponder)