2012-06-24 7 views
5

私はピンチジェスチャーが通常使用されていると考えているスケーリングの代わりに、ピンチがピンチアウトのピンチであるかどうかを検出して、一部のテーブルセクションを折りたたんだり拡張したりすることができます。それをどうやってやりますか?ジェスチャーとピンチアウトジェスチャーのピンチを検出するにはどうすればよいですか?

+0

を扱うあなたのピンチでのNSLogを置くことによって値が来ているものを試すことができますあなたは行き​​ます。以下の答えはうんざりです。 – Fattie

答えて

7

これは簡単なことです。 UIPinchGestureRecognizerクラスは、の2つのプロパティ,scaleおよびvelocityのみを持ちます。それは、否定的なscaleが内向きピンチを意味し、正のscale外向きピンチを意味すると思われる。

NB:「否定」は誤解を招く可能性があります。 「小さい」は0.0 < scale < 1.0、「大きい」はscale > 1.0です。

+0

hmmピンチアウトも負のスケールですか?ストーリーボードからドラッグされたピンチを使用して、縮尺を1に設定し、遅延の終了をチェックして遅延させ、開始を未確認にします。 – user1337645

+1

不可能。ピンチングがあなたにマイナスのスケールを与えるのではないかと疑います。この結果にどのように到達するかを確認し、説明してください。 – Mundi

+3

内側にピンチを入れると、1.0で始まり0.0に減少するスケールとなり、外側にピンチされるとスケールが開始し、1.0から増加します。 –

2

スケールプロパティを見るのは正しいですが、ゼロではなく1に切り替わります。

 
    - (BOOL) pinchWasOutwards:(UIGestureRecognizer *)gestureRecognizer 
    { 
     return gestureRecognizer.scale > 1; 
    } 
+0

ちょうど、より多くのKISSである.velocityを使用してください。 – Fattie

10

"スケール"プロパティは、ピンチインのジェスチャでは1より小さく、ピンチでは1よりも大きくなります。 これは2本の指ですべてのピンチで発生します。

5本の指で挟んだ場合(最小の家へのショートカット)、スケール値は毎回正確に1.0になります。しかしこれは私が知っているAppleのドキュメントではサポートされていません。

あなたはどの方法に応じて、正または負である(当然!)、.velocityを使用することがはるかに優れているだけで、セレクタ

NSLog(@"Scale: %.2f | Velocity: %.2f",pinch.scale,pinch.velocity); 
関連する問題