2011-07-25 9 views
0

私のアプリケーションに特別なジェスチャーを追加したいと思います。iOS向けの特別なジェスチャー

たとえば、ユーザーが画面上のXをスワイプした場合、それを削除として扱いたい場合や、ユーザーがVをスワイプする場合は、確認として扱いたいと思います。

私はUIGestureクラスのサブスクリプションを考えていましたが、必要なものを検出する方法がわかりません。

更新:チェックマークのジェスチャー(http://conceitedcode.com/2010/09/custom-gesture-recognizers/)の例が見つかりましたが、Xの実装方法はわかりません。

+0

iOSは描画のようなランダムなジェスチャをサポートしていない可能性があります。利用できるジェスチャーのほとんどは、明確なスワイプ、タップ、ターンです。 iOS 5には、Assistive Touchと呼ばれるものがあるように思われます。これは、後でカスタム描画スタイルのジェスチャーをオーバーロードする能力を示す可能性があります。 –

答えて

3

実際には、2つのジェスチャーである「X」を認識できません。以前のものが斜めのストロークであるかどうか、そしてこれが1つの場合...そしてすべての種類の狂気であるかどうかを確認するには、ある種のジェスチャーセーバーを行う必要があります。あなたは、斜めに、まっすぐに、次に斜めに他の方向に向かって、何かをすることができます。あなたにそのコードを残してください:P

しかし、あなたがしたいのは、UIGestureRecognizerのサブクラスです。 Here is some documentation on it

- (void)reset; 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; 

"V"ジェスチャを認識するためのコードです。次のメソッドを実装する必要があります。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesMoved:touches withEvent:event]; 

    if ([self state] == UIGestureRecognizerStateFailed) 
     return; 

    CGPoint curr = [[touches anyObject] locationInView:self.view]; 
    CGPoint prev = [[touches anyObject] previousLocationInView:self.view]; 

    if (!strokeUp) { 
     // upstroke has increasing x value but decreasing y value 
     if (curr.x >= prev.x && curr.y <= prev.y) { 
      strokeUp = YES; 
     } else { 
      [self state] = UIGestureRecognizerStateFailed; 
     } 
    } 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesEnded:touches withEvent:event]; 

    if (([self state] == UIGestureRecognizerStatePossible) && strokeUp) { 
     [self state] = UIGestureRecognizerStateRecognized; 
    } 

} 

これは正しい方向、幸運を指しているはずです。

+0

あなたは実際に私にそれを解決する方法を教えてくれました。「斜めの」ジェスチャーを実行し、そのうち2つをチェックします。私は必要なものに行動します。 –

+0

幸運を祈って、楽しんでください:P – ColdLogic