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

Jestem obecnie coraz 1 obiekt wJak wyłączyć touchchesBegan: w przypadku wielokrotnego dotknięcia?

touches 

kiedy zrobić kran z dwoma palcami jednocześnie (trzymając klawisz opcji i kliknięcie na symulatorze). Wydaje mi się, że dzieje się tak dlatego, że nie włączono właściwości załączonego widoku. Chcę, aby to nie było, aby zarejestrować to wydarzenie na potrzeby wielokrotnego dotknięcia.

Patrząc w tej kwestii, wydaje się, że to działa, jeśli włączę multipleTouchEnabled, a następnie wykonaj

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

w moim

touchesBegan: 

to jednak wydaje mi się dziwne, że jestem WŁĄCZENIE multipleTouchEnabled, aby WYŁĄCZYĆ wielokrotne dotknięcia, i obawiam się, że wystąpią efekty uboczne. Czy istnieje lepszy sposób na rozwiązanie mojego problemu?

+3

Pamiętaj: na prawdziwym urządzeniu jest mało prawdopodobne, że palce użytkownika dotkną ekranu dokładnie w tym samym czasie. Powinieneś być przygotowany na to, że '-touchesBegan:' zostanie wywołane dwa razy (lub więcej) z różnymi elementami. –

Odpowiedz

0

Można użyć rozpoznawania gestów, to chyba bardziej readbale niż delegata dotykał nawet jeśli kod działa:

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

Jeśli jest to obowiązkowe, aby korzystać NSTouches następnie można użyć jednej z następujących metod, aby uzyskać pożądane zadanie osiągnąć.

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

więcej ponad można grać z

setMultipleTouchEnabled:

utrzymując setExclusiveTouch

widoku danych, by TAK

1

Pierwszy dodać rozpoznawania gestów do widzenia:

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

nadzieję, że to pomoże.

2

Powinieneś być w stanie wyłączyć właściwość multitouch w widoku, w IB musisz przejść do panelu bocznego i kliknąć rzecz, która mówi widok obok właściciela pliku, aby ją pobrać, a następnie odznacz ją, lub możesz to zrobić w kodzie w viewdidload:

self.view.multiTouchEnabled = NIE;

0

Możesz użyć tej linii, aby uniknąć wielokrotnych dotknięć w jednym punkcie, ustawić wyłączny styl "Tak" w widoku.

Powiązane problemy