UIAccelerometer
UIAccelerometerクラスを使用すると、デバイスの加速度を取得する事が出来ます。
加速度を取得する事により、デバイスの向きや傾きを判断したり、どのように動かされているかなどを判断することができます。
UIAccelerometerのクラス階層
NSObject
↑
UIAccelerometer
生成
// インスタンス取得例
UIAccelerometer *acc = [UIAccelerometer sharedAccelerometer];
UIAccelerometerのインスタンスは常に、sharedAccelerometer メソッドで取得します。
このメソッドで取得したインスタンスはシングルトンなので常に同じインスタンスが取得できます。
1台のiPhone等デバイスで、同じ方向に対する加速度は1つしかないためです。
UIAccelerometerのプロパティ
プロパティ名/型 | 読専 | 説明 |
---|---|---|
delegate (UIAccelerometerDelegate) |
デリゲートを指定する (例)acc.delegate = self; ※UIAccelerometerDelegateを実装する必要あり。 |
|
updateInterval (NSTimeInterval) |
通知間隔を指定する (例)通知間隔を10分の1秒間隔にする acc.updateInterval = 1.0f / 10.0f; |
主要なプロパティのみ掲載しています。
上記「UIAccelerometerのクラス階層」にあるクラスのプロパティも使用できます。
UIAccelerometerのデリゲートメソッド
メソッド名 | 説明 |
---|---|
-(void)accelerometer: (UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration |
通知時に呼ばれるメソッド |
主要なデリゲートメソッドのみ掲載しています。
UIAccelerometer例文
// インスタンス取得~開始、停止
UIAccelerometer *acc = [UIAccelerometer sharedAccelerometer];
acc.updateInterval = 1.0f / 10.0f;
acc.delegate = self; // 通知を開始させたい時に実行する
acc.delegate = nil; // 通知を終了させたい時に実行する
// 通知時に呼ばれるデリゲートメソッド
-(void)accelerometer:(UIAccelerometer *)accelerometer
didAccelerate:(UIAcceleration *)acceleration{
UIAccelerationValue x = acceleration.x; // X軸方向の加速度
UIAccelerationValue y = acceleration.y; // Y軸方向の加速度
UIAccelerationValue z = acceleration.z; // Z軸方向の加速度
}