2010-09-30 8 views
8

Ich bin auf der Suche nach dem besten Weg, mehr als einen Finger auf dem Bildschirm zur Zeit zu erkennen. Ich erkenne kein Tippen oder Kneifen, nur die Tatsache, dass mehr als eine Berührung stattfindet. Es scheint keine Gestenerkenner dafür zu geben. Was ist der beste Weg?iOS - erkennen, wenn mehr als ein Finger auf dem Bildschirm ist

+0

Ist dies für irgendwo auf dem Bildschirm oder auf einer bestimmten Ansicht? –

Antwort

13

In den Strukturen touchesBegan, touchesMoved und touchSended ist ein Parameter das Ereignis, das ein UIEvent-Objekt ist. Die Anzahl der Finger auf dem Bildschirm ist [[event allTouches] count].

[EDITED weil Josh Hinman wies darauf hin, dass ich es vor falsch war -. Mein früherer Vorschlag, mit [berührt zählt] auf dem berührten Parameter in den gleichen Methoden nicht funktionieren]

+3

Ich denke nicht, dass dies die Gesamtzahl der Berührungen auf dem Bildschirm zuverlässig geben wird; Nur die Anzahl der Berührungen, die aktualisiert werden. Mit anderen Worten, wenn ich drei Finger auf dem Bildschirm habe und ich einen Finger bewege, während ich die anderen zwei stationär halte, dann wird touchesMoved: mit einem NSSet von einer Berührung (demjenigen, den ich bewegt habe) aufgerufen. –

0

One/Multi-Touch ist für Sie transparent - Sie erhalten nur Benachrichtigungen darüber, wo eine Berührung gestartet/verschoben/beendet/getappt wurde. Wenn zwei Berührungen gleichzeitig auftreten, erhalten Sie Benachrichtigungen für beide.

Ich kenne keine eingebaute Funktion, die bestimmt, ob die Touch-Sequenzen, die Sie sehen, aus einer Prise bestehen - Aber Sie können sich den Mustercode "touches" von Apple zur Inspiration ansehen.

https://developer.apple.com/library/ios/#samplecode/Touches/

3

auf der -touchesBegan:withEvent: Methode Lesen auf. Es ist der Einstieg in die Multi-Touch-Event-Handhabung.

Hier ist ein lib Link Entwickler auf Multi-Touch-Ereignisse: https://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MultitouchEvents/MultitouchEvents.html

+0

Ich versuchte dies in der Ansicht Controller, aber es wird nie aufgerufen: - (void) touchesBegan: (NSSet *) berührt mitEvent: (UIEvent *) Ereignis { \t NSLog (@ "Anzahl berührt:% d", [berührt Anzahl]); } – sol

0

können Sie versuchen, eine UITapGestureRecognizer-Klasse, und stellen Sie die numberOfTouchesRequired Eigenschaft auf 2.

Beachten Sie, dass dies nur funktioniert, wenn multipleTouchEnabled eingestellt ist JA in der Ansicht.

0
  • (nichtig) touchesBegan: (NSSet *) Berührungen mitEvent: (UIEvent *) Ereignis {

    NSLog (@ "% lu", [[event allTouches] Zählung]); }