内容の保証はできません。


/System/Library/frameWorks/UIKit.framework

クラス UIControl

NSObject
  |
  +--UIResponder
      |
      +--UIView
          |
          +--UIControl

概要

UIControlは制御のための基本クラスです。ボタンやスライダーのようなオブジェクトは、ユーザの意図をアプリケーションに伝達するために使用されます。コントロールのインスタンスを直接使用することは出来ません。その代わりに、共通のインタフェースとその全てのサブクラスの行動の構造を定義します。

UIControlの主な役割は、インターフェースを定義し、アクションメッセージを構築して、指定されたイベントが発生したら即座にアクションメッセージを送信します。

ターゲットアクションメカニズム

UIKitフレームワークのターゲットアクションメカニズムの構造は、マルチタッチイベントモデルに基づいています。iPhoneOSではマウスのクリックやドラッグの代わりに、指やタッチ動作によってユーザーの意図を伝達します。また、複数の異なる方向に進むマルチタッチの操作をいつでも制御することが可能です。

※マルチタッチのイベントモデルの詳細に関しては「iPhoneアプリケーションプログラミングガイド」の『イベント処理項目』を参照してください。

UIControl.hヘッダファイルは、各種イベントを"control event"と言うビットマスクで表現するため、それらを(個々のアクションに対応した)定数で宣言しています。タッチダウン、ドラッグ、リフトアップのような様々なアクションが列挙型で構成されており、タッチによるアクションは"control event"にある定数によって明確にされます。テキストフィールド用にタッチ時に編集フェーズが開始させたり、スライダー用にUIControlEventValueChangeedと言った操作に基づいて値を連続的に変化させるイベントの制御方法があります。メッセージを送信するトリガー(引き金)として、一つまたは複数のイベントをを指定することが可能です。例えば、特定のターゲットにタッチダウンまたはドラッグの2つのアクションをトリガーとして設定する場合(UIControlEventTouchDown|UIControlEventTouchDragEnter)のように記述することになります。

addTarget:action:forControlEvents:メソッドを呼び出すことによって、ターゲットとアクションのペアを指定して、アクションメッセージを送信するためのコントロールを作成することが出来ます。このメソッドは、コントロールイベントとターゲット-アクションのペアを結びつけて内部ディスパッチテーブルを構築します。ユーザのタッチにより、一つまたはそれ以上の指定されたアクションが発生した時、UIControlは自分自身をsendActionsForControlEventsメソッドに送ります。その結果、UIControlはUIApplicationのsendAction:to:from:forEvent:メソッドによりアクションを送ることができるのです。UIApplicationは、アクションメッセージにより集められたディスパッチポイントであり、アクションの対象がnilに指定されている場合、アプリケーションはファーストレスポンダにアクションを送信します。レスポンダチェーンは、ファーストレスポンダが送信されるまで、アクションメッセージの処理を受け入れるオブジェクト(アクションセレクタとの通信を行うオブジェクト)を探すことになります。

UIKitは3つの異なる形態のアクションセレクタを許可します。

 
- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)event
 

UIApplicationのsendAction:to:fromSender:forEvent:メソッドは、アクションの対象を呼び出す時に2つのパラメーターを格納します。最後の2つのパラメータは、呼び出し元(大抵はUIControlオブジェクト)が任意のパラメータを削除するために追加されているオプションです。

サブクラスについて

次の2つの理由により、基本的にUIControlサブクラスを拡張する必要があります。

1.
特定のイベントを対象に、アクションメッセージのディスパッチを監視または変更する必要があるため。これを行うには、sendAction:to:forEvent:メソッドをオーバーライドして対象のオブジェクト、セレクタ、または"Note"ビットマスクの評価を必要に応じて継続する。

2.
カスタムトラッキング(例えば、ハイライトの概観を変更すること)を提供するため。これを行うには 、次のいずれか、または全てのメソッドをオーバーライドする必要がある。

beginTrackingWithTouch:withEvent:
continueTrackingWithTouch:withEvent:
endTrackingWithTouch:withEvent:

インデックス

アクションメッセージの準備と送信

– sendAction:to:forEvent:
– sendActionsForControlEvents:
– addTarget:action:forControlEvents:
– removeTarget:action:forControlEvents:
– actionsForTarget:forControlEvent:
– allTargets
– allControlEvents

属性の制御

state property
enabled property
selected property
highlighted property
contentVerticalAlignment property
contentHorizontalAlignment property

トラッキングと再描画

– beginTrackingWithTouch:withEvent:
– continueTrackingWithTouch:withEvent:
– endTrackingWithTouch:withEvent:
– cancelTrackingWithEvent:
tracking property
touchInside property

プロパティ

contentHorizontalAlignment

コンテンツ(テキストや画像)の水平方向の配置を指定する。

@property(nonatomic) UIControlContentsHorizontalAlignment contentHorizontalAlignment

contentVerticalAlignment

コンテンツ(テキストや画像)の垂直方向の配置を指定する。

@property(nonatomic) UIControlContentsVerticalAlignment contentVerticalAlignment

enabled

レシーバが有効であるかどうかを決定する。

@property(nonatomic, getter=isEnabled) BOOL enabled

highlighted

レシーバがハイライトされるかどうかを決定する。

@property(nonatomic, getter=isHighlighted) BOOL highlighted

selected

レシーバが選択された状態であるかどうかを決定する。

@property(nonatomic, getter=isSelected) BOOL selected

state

レシーバの状態を返す。(読み取りのみ)

@property(nonatomic, readonly) UIControlState state

touchInside

レシーバのフレーム内でタッチがあったかどうかを返す。(読み取りのみ)

@property(nonatomic, readonly, getter=isTouchInside) BOOL touchInside

tracking

レシーバがイベントに関連するタッチを現在追跡しているかどうかを返す。(読み取りのみ)

@property(nonatomic, readonly, getter=isTracking) BOOL tracking

インスタンスメソッド

actionsForTarget:forControlEvent:

特定のコントロールイベントやターゲットに関連付けられているアクションを返す。

– (NSArray *)actionsForTarget:(id)target forControlEvent:(UIControlEvents)controlEvent

addTarget:action:forControlEvents:

内部ディスパッチテーブルに特定のイベントに関連するアクションとターゲットを追加する。

– (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

allControlEvents

レシーバに関連付けられた全てのコントロールイベントを返す。

– (UIControlEvents)allControlEvents

allTargets

レシーバに関連付けられた全てのターゲットオブジェクトを返す。

– (NSSet *)allTargets

beginTrackingWithTouch:withEvent:

指定したイベントに関連するタッチがレシーバの境界内で発生した場合この処理が呼ばれる。戻り値がYESならばレシーバは継続的にタッチやドラッグを監視(トラッキング)している。

- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event

cancelTrackingWithEvent:

指定したイベントに関連するトラッキングがキャンセルされたときにこの処理が呼ばれる。

– (void)cancelTrackingWithEvent:(UIEvent *)event

continueTrackingWithTouch:withEvent:

指定したイベントに関連するトラッキングが再開されたときにこの処理が呼ばれる。

- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event

endTrackingWithTouch:withEvent:

指定したイベントに関連するトラッキングが終了したときにこの処理が呼ばれる。

– (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event

removeTarget:action:forControlEvents:

内部ディスパッチテーブルから特定のイベントに関連するアクションとターゲットを削除する。

– (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

sendAction:to:forEvent:

指定したイベントへの応答時、アプリケーションオブジェクトにアクションメッセージを転送する。

– (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event

sendActionsForControlEvents:

指定したコントロールイベントにアクションメッセージを転送する。

– (void)sendActionsForControlEvents:(UIControlEvents)controlEvents

コンスタント

UIControlEvents

コントロールイベント概要
UIControlEventTouchDownタッチダウン
UIControlEventTouchDownRepeat2回以上のタッチダウン
UIControlEventTouchDragInside境界内でのドラッグ
UIControlEventTouchDragOutside境界外でのドラッグ
UIControlEventTouchDragEnter境界内へのドラッグ
UIControlEventTouchDragExit境界外へのドラッグ
UIControlEventTouchUpInside境界内でのタッチアップ
UIControlEventTouchUpOutside境界外でのタッチアップ
UIControlEventTouchCancelシステムイベントによりイベントのキャンセル
UIControlEventValueChanged-
UIControlEventEditingDidBeginUITextFieldオブジェクトの編集セッションの開始
UIControlEventEditingChangedUITextFieldオブジェクトの編集
UIControlEventEditingDidEndUITextFieldオブジェクトの編集の終了
UIControlEventEditingDidEndOnExitUITextFieldオブジェクトの編集セッションが終了
UIControlEventAllTouchEvents全てのタッチイベント
UIControlEventAllEditingEvents全てのUITextFieldオブジェクト編集イベント
UIControlEventApplicationReserved-
UIControlEventSystemReserved-
UIControlEventAllEventsシステムイベントを含む全てのコントロールイベント

VerticalContentAlignment

垂直方向の配置概要
UIControlContentVerticalAlignmentCenter中心に配置
UIControlContentVerticalAlignmentTop最上部に配置
UIControlContentVerticalAlignmentBottom最下部に配置
UIControlContentVerticalAlignmentFill境界いっぱいに配置

HorizontalContentAlignment

水平方向の配置概要
UIControlContentHorizontalAlignmentCenter中心に配置
UIControlContentHorizontalAlignmentLeft左端に配置
UIControlContentHorizontalAlignmentRight右端に配置
UIControlContentHorizontalAlignmentFill境界いっぱいに配置

ControlState

状態概要
UIControlStateNormalデフォルトの状態
UIControlStateHighlightedハイライトされた状態
UIControlStateDisabled無効な状態
UIControlStateSelected選択された状態
UIControlStateApplicationReserved-
UIControlStateReserved-

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-10-24 (日) 17:14:25 (2522d)