このコードを使用して振動検出を行っていますが、ほとんどの場合、正常に動作します。
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (event.type == UIEventSubtypeMotionShake) {
if ( event.subtype == UIEventSubtypeMotionShake )
{
NSLog (@"Shake Called");
}
}
これが機能するためには、私が持っているこれらも使用する必要があると思います:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
- (void)viewDidDisappear:(BOOL)animated {
[self resignFirstResponder];
[super viewDidDisappear:animated];
}
これはすべてうまく機能し、プログラムmotionEnded
のリンクをクリックするまで、シェイクするたびに呼び出されます。webView
ビューを上下にスクロールでき、シェイクは引き続き機能しますが、ビューが新しいページをロードするとすぐに、motionEnded
シェイクすると呼び出されなくなります。これは、シミュレーターと実際のデバイス (iPhone 3G、iOS4) の両方で発生します。私の限られた理解から、それはファーストレスポンダーと関係があると信じていますが、間違っている可能性があります!