UITouch
フレームワーク: iOS 2.0 以降の UIKit。関連情報...
UITouch オブジェクトは、特定のイベントのために画面上の指の位置、大きさ、動き、そして力を表します。タッチの force (力) は 3D Touch や Apple Pencil をサポートするデバイス上で iOS 9 以降で利用可能です。
イベント処理のためのレスポンダオブジェクトに渡された UIEvent オブジェクトを通してタッチオブジェクトにアクセスして下さい。タッチオブジェクトは、以下のアクセッサを含んでいます。
- タッチがその中で発生したビューまたはウィンドウ
- ビューまたはウィンドウ内のタッチの位置
- タッチのおおよその半径
- (3D Touch や Apple Pencil をサポートしているデバイス上で) タッチの力
タッチオブジェクトはまた、タッチが発生したときを示すタイムスタンプを含み、ユーザーが画面をタップした回数を表す整数、およびタッチが始まり、移動し、または終了し、またはシステムがタッチをキャンセルしたかどうかを説明する定数の形式でタッチの相を示します。
スワイプの操作方法を学習するには、iOS 用ガイドイベント処理 内の スワイプとドラッグジェスチャーの取り扱い をお読み下さい。
タッチオブジェクトは、マルチタッチシーケンス全体を通じて持続します。イベントを処理するときにタッチオブジェクトは決して保持してはいけません。あるタッチ相から別のタッチについての情報を保持する必要がある場合は、タッチからの情報をコピーして下さい。
タッチの gestureRecognizers プロパティは、現在タッチを処理しているジェスチャー認識機能を含んでいます。各ジェスチャ認識機能は UIGestureRecognizer の具象サブクラスのインスタンスです。
タスク
タッチの場所を取得
- locationInView:
与えられたビューの座標系における受信者の現在位置を返します。
宣言
<< SWIFT >>
func locationInView(_ view: UIView?) -> CGPoint
<< OBJECTIVE-C >>
- (CGPoint)locationInView:(UIView *)view
パラメーター
view | タッチが起こった希望の座標系内のビュー・オブジェクト。タッチを処理しているカスタムビューは、独自の座標系でタッチ位置を取得するため、self を指定できます。ウィンドウの座標内のタッチ位置を取得するために nil を渡して下さい。 |
戻り値
view 内の受信者の位置を指定するポイント。
議論
このメソッドは、指定したビューの座標系内の UITouch オブジェクトの現在位置を返します。タッチオブジェクトが、あるビューから別のビューに転送されてきた可能性があるため、このメソッドは指定されたビューの座標系へのタッチ位置の全ての必要な変換を行います。
利用可能
iOS X 2.0 以降で利用可能。
以下も見よ
– previousLocationInView:– previousLocationInView:
与えられたビューの座標系内の受信者の以前の位置を返します。
宣言
<< SWIFT >>
func previousLocationInView(_ view: UIView?) -> CGPoint
<< OBJECTIVE-C >>
- (CGPoint)previousLocationInView:(UIView *)view
パラメーター
view | タッチが起こった希望の座標系内のビュー・オブジェクト。タッチを処理しているカスタムビューは、独自の座標系でタッチ位置を取得するため、self を指定できます。ウィンドウの座標内のタッチ位置を取得するために nil を渡して下さい。 |
戻り値
このメソッドは、指定したビューの座標系内の UITouch オブジェクトの以前の位置を返します。タッチオブジェクトが、あるビューから別のビューに転送されてきた可能性があるため、このメソッドは指定されたビューの座標系へのタッチ位置の全ての必要な変換を行います。
利用可能
iOS X 2.0 以降で利用可能。
以下も見よ
– locationInView:view プロパティ
もし存在すれば、タッチが配信されているビュー。(読み取り専用)
宣言
<< SWIFT >>
var view: UIView? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, strong) UIView *view
議論
このプロパティの値は、必ずしもタッチが起こっている現在のビューではなく、タッチが配信されているビューオブジェクトへのものである。例えば、ジェスチャー認識機はタッチを認識するときに、全てのビューがタッチを受けないため、このプロパティは nil です。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
window プロパティwindow プロパティ
タッチが最初にその中で発生すしたウィンドウ。(読み取り専用)
宣言
<< SWIFT >>
var window: UIWindow? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, strong) UIWindow *window
議論
プロパティの値はタッチが最初にその中で発生したウィンドウオブジェクトです。このオブジェクトは、タッチが現在あるウィンドウではないかもしれません。
利用可能
iOS 2.0 以降で利用可能。
以下も見よ
view プロパティmajorRadius プロパティ
タッチの(ポイント単位の) 半径。(読み取り専用)
宣言
<< SWIFT >>
var majorRadius: CGFloat { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) CGFloat majorRadius
議論
ハードウェアによって報告されたタッチの大きさを決定するために、このプロパティの値を使用してください。この値は、サイズの近似であり、majorRadiusTolerance プロパティで指定された量だけ変化することができます。
利用可能
iOS 8.0 以降で利用可能。
majorRadiusTolerance プロパティ
タッチ半径の(ポイントでの) 許容範囲。(読み取り専用)
宣言
<< SWIFT >>
var majorRadiusTolerance: CGFloat { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) CGFloat majorRadiusTolerance
議論
この値は、majorRadius プロパティ内の値の精度を決定します。最大タッチ半径を取得するためには、半径にこの値を加算して下さい。最小タッチ半径を取得するには値を減算して下さい。
利用可能
iOS 8.0 以降で利用可能。
- preciseLocationInView:
利用可能なときに、タッチの正確な位置を返します。
宣言
<< SWIFT >>
func preciseLocationInView(_ view: UIView?) -> CGPoint
<< OBJECTIVE-C >>
- (CGPoint)preciseLocationInView:(UIView *)view
パラメーター
view | タッチを含むビュー。 |
戻り値
タッチの正確な位置。
議論
タッチ(利用可能な時) の追加の精度を得るために、このメソッドを使用できますが、ヒットテストのためには使用できません。いくつかの場合、ヒットテストは、タッチがビュー内にあることを示せますが、より正確な位置は、タッチが実際にはビューの外にあることを示すことがあります。
利用可能
iOS 9.1 以降で利用可能。
- precisePreviousLocationInView:
利用可能なときに、タッチの正確な以前の位置を返します。
宣言
<< SWIFT >>
func precisePreviousLocationInView(_ view: UIView?) -> CGPoint
<< OBJECTIVE-C >>
- (CGPoint)precisePreviousLocationInView:(UIView *)view
パラメーター
view | タッチを含んでいたビュー。 |
戻り値
タッチの正確な以前の位置。
議論
タッチの以前の位置(利用可能な時) の追加の精度を得るために、このメソッドを使用できますが、ヒットテストのためには使用できません。いくつかの場合、ヒットテストは、タッチがビュー内にあることを示せますが、より正確な位置は、タッチが実際にはビューの外にあったことを示すことがあります。
利用可能
iOS 9.1 以降で利用可能。
タッチ属性の取得
tapCount プロパティ
指が、この与えられたタッチにタップされた回数。(読み取り専用)
宣言
<< SWIFT >>
var tapCount: Int { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) NSUInteger tapCount
議論
このプロパティの値は、ユーザーが事前に定義された期間内に特定のポイントで自分の指をタップした回数を示す整数です。ユーザーがシングルタップ、ダブルタップ、あるいはトリプルタップさえも特定のビューやウィンドウで起こしたかどうかを確認したい場合は、このメソッドが返す値を評価する必要があります。
利用可能
iOS 2.0 以降で利用可能。
timestamp プロパティ
タッチが発生したか、それが最後に変異したときの時間。(読み取り専用)
宣言
<< SWIFT >>
var timestamp: NSTimeInterval { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) NSTimeInterval timestamp
議論
システムは、タッチが起こったかまたは最後に変更された時に始まり、このプロパティの値は、秒単位の時間です。この属性の初期値を UITouch インスタンスの後続のタイムスタンプ値保存、比較でき、移動速度は、スワイプされている場合は、タッチの継続時間をそれで決定できます。ブート以来の時間の値の定義については、NSProcessInfo クラスの systemUptime メソッドの説明を参照してください。
利用可能
iOS 2.0 以降で利用可能。
type プロパティ
タッチのタイプ。
宣言
<< SWIFT >>
var type: UITouchType { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) UITouchType type
議論
タッチタイプの完全なリストについては、タッチタイプ を参照してください。
利用可能
iOS 9.0 以降で利用可能。
phase プロパティ
タッチの相。(読み取り専用)
宣言
<< SWIFT >>
var phase: UITouchPhase { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) UITouchPhase phase
議論
プロパティ値はタッチが、始まった、移動した、終了した、またはキャンセルされたかどうかを示す定数です。UITouchPhase の取り得る値の説明については、タッチ相 を参照してください。
利用可能
iOS 2.0 以降で利用可能。
force プロパティ
タッチの力であり、1.0 の値は平均的なタッチの力を表します(ユーザー固有ではなく、システムによってあらかじめ決定されている)。(読み取り専用)
宣言
<< SWIFT >>
var force: CGFloat { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) CGFloat force
議論
このプロパティは、3D Touch や Apple Pencil をサポートするデバイスで利用可能です。デバイスが、3D タッチをサポートしているか、実行時にチェックするには、特徴環境でアプリ内の任意のオブジェクトの特徴コレクションの UIForceTouchCapability プロパティの値を読み取って下さい。
Apple Pencil で報告されている力は、pencil の軸に沿って測定されることに注意してください。デバイスに対して垂直な力が必要な場合は、altitudeAngle の値を使用してこの値を計算する必要があります。
利用可能
iOS 9.0 以降で利用可能。
以下も見よ
maximumPossibleForcemaximumPossibleForce プロパティ
タッチの、可能な最大の力。(読み取り専用)
宣言
<< SWIFT >>
var maximumPossibleForce: CGFloat { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) CGFloat maximumPossibleForce
議論
このプロパティの値は、force プロパティの値の広いダイナミックレンジを提供するのに十分に高いです。
このプロパティは、3D Touch や Apple Pencil をサポートするデバイスで利用可能です。デバイスが、3D タッチをサポートしているか、実行時にチェックするには、特徴環境でアプリ内の任意のオブジェクトのの形質コレクションの UIForceTouchCapability プロパティの値を読み取って下さい。
利用可能
iOS 9.0 以降で利用可能。
以下も見よ
force プロパティaltitudeAngle プロパティ
スタイラスの(ラジアンでの) 高度。(読み取り専用)
宣言
<< SWIFT >>
var altitudeAngle: CGFloat { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) CGFloat altitudeAngle
議論
0 ラジアンの値は、スタイラスが表面に平行であることを示します。スタイラスが表面に垂直である場合、altitudeAngle は、Pi/2 です。
利用可能
iOS 9.1 以降で利用可能。
- azimuthAngleInView:
スタイラスの(ラジアンで) 方位角を返します。
宣言
<< SWIFT >>
func azimuthAngleInView(_ view: UIView?) -> CGFloat
<< OBJECTIVE-C >>
- (CGFloat)azimuthAngleInView:(UIView *)view
パラメーター
view | スタイラスのタッチを含むビュー。タッチのウィンドウへの相対方位角を得るためには nil を渡して下さい。 |
戻り値
ラジアンでのスタイラスの方位角。
議論
0 ラジアンの値は、正の x 軸に沿う事を示す。方位角は、ユーザがスタイラスのキャップ端部(すなわち、スタイラス先端の反対側の端) を揺り動かして時計回りに増えます。(方位単位ベクトルとは対照的に) 方位角を得るのは、より高価になることに留意されたいが、それはまた、より便利です。
利用可能
iOS 9.1 以降で利用可能。
以下も見よ
– azimuthUnitVectorInView:– azimuthUnitVectorInView:
スタイラスの方位角の方向を指す単位ベクトルを返します。
宣言
<< SWIFT >>
func azimuthUnitVectorInView(_ view: UIView?) -> CGVector
<< OBJECTIVE-C >>
- (CGVector)azimuthUnitVectorInView:(UIView *)view
パラメーター
viw | スタイラスのタッチを含むビュー。タッチのウィンドウへの相対方位角の単位ベクトルを取得するには nil を渡して下さい。 |
戻り値
スタイラスの方位角の方向を指す単位ベクトル。
議論
これは、(方位角と比べると) 方位角単位ベクトルを取得するには、より安価だし、変換行列を作成している場合、単位ベクトルは、より有用です。
利用可能
iOS 9.1 以降で利用可能。
以下も見よ
estimatedProperties プロパティ
更新されるタッチプロパティのセット。(読み取り専用)
宣言
<< SWIFT >>
var estimatedProperties: UITouchProperties { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) UITouchProperties estimatedProperties
議論
このプロパティの値は タッチプロパティ によって与えられるタッチプロパティのビットマスクを含んでいます。
利用可能
iOS 9.1 以降で利用可能。
estimationUpdateIndex プロパティ
更新されたタッチをオリジナルのタッチで関連付けることができるインデックス番号。(読み取り専用)
宣言
<< SWIFT >>
var estimationUpdateIndex: NSNumber? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) NSNumber *estimationUpdateIndex
議論
このプロパティの値は、推定プロパティを含む各タッチで単調に増加します。タッチの更新を適切なタッチに適用することを確認するために、このプロパティを使用できます。オブジェクトが推定または更新されたプロパティのいずれかを含んでいないときには、このプロパティの値は nil です。
利用可能
iOS 9.1 以降で利用可能。
以下も見よ
estimatedProperties プロパティestimatedPropertiesExpectingUpdates プロパティ
将来的になされる更新を期待するタッチプロパティのセット。
宣言
<< SWIFT >>
var estimatedPropertiesExpectingUpdates: UITouchProperties { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly) UITouchProperties estimatedPropertiesExpectingUpdates
議論
更新が推定プロパティに何も期待されていない場合は、現在の値は、最終的な推定値です。
利用可能
iOS 9.1 以降で利用可能。
以下も見よ
estimatedProperties プロパティタッチオブジェクトのジェスチャー認識装置の取得
gestureRecognizers プロパティ
タッチオブジェクトを受信しているジェスチャー認識装置。(読み取り専用)
宣言
<< SWIFT >>
var gestureRecognizers: [UIGestureRecognizer]? { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, copy) NSArray <UIGestureRecognizer *> *gestureRecognizers
議論
配列内のオブジェクトは、抽象基本クラス UIGestureRecognizer のサブクラスのインスタンスです。現在タッチオブジェクトを受けているジェスチャー認識装置がない場合、このプロパティは空の配列を保持します。
利用可能
iOS 3.2 以降で利用可能。
Sprite Kit でのタッチイベントの作業
locationInNode:
与えられたノードの座標系における受信者の現在位置を返します。
宣言
<< SWIFT >>
func locationInNode(_ node: SKNode) -> CGPoint
<< OBJECTIVE-C >>
- (CGPoint)locationInNode:(SKNode *)node
パラメーター
node | タッチイベントを受け取ったウィンドウに表示されるシーンの子孫であるノード。 |
戻り値
ノードの座標系におけるタッチの位置。
Import 文
<< OBJECTIVE-C >>
@import SpriteKit;
<< SWIFT >>
import SpriteKit
利用可能
iOS 7.0 以降で利用可能。
- previousLocationInNode:
与えられたノードの座標系における受信者の以前の位置を返します。
宣言
<< SWIFT >>
func previousLocationInNode(_ node: SKNode) -> CGPoint
<< OBJECTIVE-C >>
- (CGPoint)previousLocationInNode:(SKNode *)node
パラメーター
node | タッチイベントを受け取ったウィンドウ内に表示されるシーンの子孫であるノード。 |
戻り値
ノードの座標系におけるタッチの位置。
Import 文
<< OBJECTIVE-C >>
@import SpriteKit;
<< SWIFT >>
import SpriteKit
利用可能
iOS 7.0 以降で利用可能。
定数
UIForceTouchCapability
力のタッチが利用可能かどうかを示す値。
宣言
<< SWIFT >>
enum UIForceTouchCapability : Int { case Unknown case Unavailable case Available }
<< OBJECTIVE-C >>
typedef enum { UIForceTouchCapabilityUnknown = 0, UIForceTouchCapabilityUnavailable = 1, UIForceTouchCapabilityAvailable = 2 } UIForceTouchCapability;
定数
力のタッチの利用可能性を決定できません。
iOS 9.0 以降で利用可能。
力のタッチは使用できません。
iOS 9.0 以降で利用可能。
力のタッチが利用可能です。
iOS 9.0 以降で利用可能。
Import 文
<< OBJECTIVE-C >>
@import UIKit;
<< SWIFT >>
import UIKit
利用可能
iOS 7.0 以降で利用可能。
UITouchType
受信したタッチの種類。
宣言
<< SWIFT >>
enum UITouchType : Int { case Direct case Indirect case Stylus }
<< OBJECTIVE-C >>
typedef enum { UITouchTypeDirect, UITouchTypeIndirect, UITouchTypeStylus } UITouchType;
定数
画面上での指からの直接のタッチ。
iOS 9.0 以降で利用可能。
画面上でない、間接的なタッチ。
iOS 9.0 以降で利用可能。
スタイラスからのタッチ。
iOS 9.1 以降で利用可能。
Import 文
<< OBJECTIVE-C >>
@import UIKit;
<< SWIFT >>
import UIKit
利用可能
iOS 9.1 以降で利用可能。
UITouchProperties
更新されるかもしれない、タッチプロパティのビットマスク。
宣言
<< SWIFT >>
struct UITouchProperties : OptionSetType { init(rawValue rawValue: Int) static var Force: UITouchProperties { get } static var Azimuth: UITouchProperties { get } static var Altitude: UITouchProperties { get } static var Location: UITouchProperties { get } }
<< OBJECTIVE-C >>
typedef enum { UITouchPropertyForce = (1UL << 0), UITouchPropertyAzimuth = (1UL << 1), UITouchPropertyAltitude = (1UL << 2), UITouchPropertyLocation = (1UL << 3), } UITouchProperties;
定数
ビットマスクで、力を表すタッチプロパティ。
iOS 9.1 以降で利用可能。
ビットマスクで、方位角を表すタッチプロパティ。
iOS 9.1 以降で利用可能。
ビットマスクで、高度を表すタッチプロパティ。
iOS 9.1 以降で利用可能。
ビットマスクで位置を表すタッチプロパティ。
iOS 9.1 以降で利用可能。
Import 文
<< OBJECTIVE-C >>
@import UIKit;
<< SWIFT >>
import UIKit
利用可能
iOS 9.1 以降で利用可能。
UITouchPhase
指でのタッチの相。
宣言
<< SWIFT >>
enum UITouchPhase : Int { case Began case Moved case Stationary case Ended case Cancelled }
<< OBJECTIVE-C >>
typedef enum { UITouchPhaseBegan, UITouchPhaseMoved, UITouchPhaseStationary, UITouchPhaseEnded, UITouchPhaseCancelled, } UITouchPhase;
定数
スクリーン上で与えられたイベントで指がタッチしました。
iOS 2.0 以降で利用可能。
スクリーン上で与えられたイベントで指が移動しました。
iOS 2.0 以降で利用可能。
指が表面に触れているが、前回のイベント以来、移動していません。
iOS 2.0 以降で利用可能。
与えられたイベントの指がスクリーンから持ち上がりました。
iOS 2.0 以降で利用可能。
(例えば)、ユーザーが自分の顔に対してデバイスを移動させたときのように、タッチのトラッキングをシステムがキャンセルしました。
議論
UITouch インスタンスの相は、イベントの途中でも、特定の順序で変化します。phase プロパティを通してこの値にアクセスして下さい。
Import 文
<< OBJECTIVE-C >>
@import UIKit;
<< SWIFT >>
import UIKit
利用可能
iOS 2.0 以降で利用可能。
次の章