iOS

2012-08-24, ios

シェイクジェスチャーを検出する

UIResponderに定義されているmotionEndedを実装します。但し、このビューがファーストレスポンダである必要があるので注意が必要です。カスタムで作成したビューなどの場合、canBecomeFirstResponderがNOを返すようになっているので、こちらもオーバライドして(YESを返すよう)実装します。

- (BOOL) canBecomeFirstResponder
{
    return YES;
}

- (void) motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if(!self.image) return;

    UIAlertView *av = [[UIAlertView alloc] initWithTitle:nil message:@"写真を削除しますか?" delegate:self cancelButtonTitle:@"キャンセル" otherButtonTitles:@"削除", nil ];
    [av show];
}

手元の参考書ではUIAccelerometerDelegateを実装する方法が書かれていました。検出の閾値を細かく設定したい場合は有効ですが、コードは複雑になります。上記の方法がよりお手軽です。

参考URL

この記事は役に立ちましたか?