私はこのページで揺れの「チュートリアル」を実装しようとしていますが、何か不足していると思います。私は彼の加速度計機能をmyAppViewController.mファイルにコピーし、そこにいくつかのnslogを入れて、シミュレータ "震動"機能を使用するときに機能に入るかどうかを確認します。デバッグコンソールには何も表示されません。iphoneの揺れを検出してプログラムする方法
http://mithin.in/2009/07/28/detecting-a-shake-using-iphone-sdk
誰もが、私は失われるかもしれないものを説明できますか?またはチュートリアルを教えてください。
私は有望に見えるれ、これを見つけたが、私は How do I detect when someone shakes an iPhone?
EDIT「のUIViewにそれを置く」方法がわからない - ので、受け入れ答えの提案で今ここに私の作業コードです。
私のコードは、3.0 iphone sdkの揺れのジェスチャーを検出するためのコードです。
-(BOOL)canBecomeFirstResponder {
return YES;
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[self resignFirstResponder];
[super viewWillDisappear:animated];
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
NSLog(@"{motion ended event ");
if (motion == UIEventSubtypeMotionShake) {
NSLog(@"{shaken state ");
}
else {
NSLog(@"{not shaken state ");
}
}
はい、シミュレータで動作します。 – Neo42
実際には、 'becomeFirstResponder'を呼び出す必要はありません。 viewControllerがモーションイベントに応答するために必要な唯一のアクションは、viewControllerがfirstResponderになることができるようにすることです。 ドックで説明したように、UIViewは 'motionBegan'などのメッセージをレスポンダチェーンに渡します。これは、' canBecomeFirstResponder'がYESを返す限り、最終的にビューのコントローラを見つけることになります。 –