電話の位置を特定するために、アプリケーションが加速度計データを常にループするようにコードを設定しました。電話の Z 座標を取得し、それに基づいてアクションを呼び出せるようにしたいと考えています。
今私はこれを持っています:
if (.3 > filter.z && filter.z > -.3){
NSLog(@"STRAIGHT = %f", filter.z);
}
else if (1.3 > filter.z && filter.z > .7){
NSLog(@"DOWN = %f", filter.z);
[self performSelector:@selector(loadNextFlag) withObject:nil
afterDelay:1.0];
}
else if (-.4 > filter.z && filter.z > -1.3){
NSLog(@"UP = %f", filter.z);
}
このコードは機能します。電話がどの方向を向いているかを認識し、情報を正しく記録します。機能しないのは performSelector です。携帯電話を下に傾けると、加速度計は常に座標情報を更新しているため、数秒以内に大量の performSelector アクションが呼び出され、アプリがクラッシュします。Z座標を追跡しながら、携帯電話を下に傾けるたびに1回だけアクションを呼び出す方法を知っている人はいますか?