2013-02-11 12 views
6
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

ich zur Zeit bin immer ein Objekt inWie deaktiviere ich touchesBegan: für Multi-Touches?

touches 

, wenn ich einen Hahn mit zwei Fingern gleichzeitig tun (Halteoptionstaste und klicken Sie auf den Simulator). Ich glaube, das liegt daran, dass ich die Eigenschaft der angehängten Ansicht nicht aktiviert habe. Ich möchte es so machen, dass ich dieses Event nicht für Multi-Touches registriere.

Blick in die Frage, wie es scheint, wie es funktionieren würde, wenn ich multipleTouchEnabled aktivieren, und dann tun

if ([touches count] > 1) { 
    return; 
} 

in meinem

touchesBegan: 

Dies scheint jedoch seltsam für mich, dass ich bin AKTIVIEREN von multipleTouchEnabled, um mehrere Berührungen zu deaktivieren, und ich bin besorgt, ob es Nebenwirkungen gibt. Gibt es einen besseren Weg, mein Problem zu lösen?

+3

Denken Sie daran: Auf einem echten Gerät ist es unwahrscheinlich, dass die Finger des Benutzers den Bildschirm zur selben Zeit berühren. Sie sollten vorbereitet sein für -touchesBegan: 'um zweimal (oder mehr) mit verschiedenen Berührungen angerufen zu werden. –

Antwort

0

Sie eine Gestenerkenner verwenden könnte, ist dies wahrscheinlich mehr readbale als die Berührungen delegieren, auch wenn Ihr Code funktioniert:

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myAction:)]; 
gestureRecognizer.numberOfTouchesRequired = 2; 
0

Wenn es obligatorisch ist NSTouches verwenden, dann können Sie die folgenden Methoden verwenden die erhalten gewünschte Aufgabe erreichen.

[view setMultipleTouchEnabled:NO]; 
[view setExclusiveTouch:YES]; 

mehr über Sie mit

spielen setMultipleTouchEnabled:

von

Ansicht des setExclusiveTouch auf YES

01 halten
1

zunächst eine Gestenerkenner zu Ihrer Ansicht hinzuzufügen:

UITapGestureRecognizer *multipleTouches = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleMultiTap:)]; 
multipleTouches.numberOfTouchesRequired = 2; 
[yourViewName addGestureRecognizer:multipleTouches]; 
[multipleTouches release]; 

Hoffe, es wird Ihnen helfen.

2

Sie sollten nur in der Lage sein, die Multitouch-Eigenschaft auf der Ansicht zu deaktivieren, in IB müssen Sie tatsächlich auf die Seitenwand gehen und auf das Ding klicken, das sagt, neben Dateibesitzer zu sehen, um es zu bekommen und dann deaktivieren, oder Sie könnten es in Code in Viewdidload tun:

self.view.multiTouchEnabled = NO;

0

Sie können diese Zeile verwenden, um mehrere Berührungen an einem Punkt zu vermeiden. Setzen Sie die exklusive Berührung "Ja" auf Ihre Ansicht.

[self.view setExclusiveTouch:YES]; 
Verwandte Themen