2013-04-14 12 views
5

Jest to prosty problem, ale trudny do rozwiązania.zapobiega jednoczesnemu naciskaniu przycisków

Mam dwa przyciski, które wykonują tę samą funkcję.

Ustawiłem różne zdarzenia dotykowe dla przycisków. Chociaż to pomaga, nadal można naciskać je jednocześnie. Na wolnym połączeniu będzie jeszcze łatwiej.

[vote1Btn addTarget:self action:@selector(voteUp:) forControlEvents:UIControlEventTouchUpInside]; 
[vote2Btn addTarget:self action:@selector(voteUp:) forControlEvents:UIControlEventTouchDown]; 
+3

Co to jest funkcjonalność tego przycisku i dlaczego jest on powiązany z "wolnym połączeniem"? – J2theC

+1

Wygląda na to, że możesz robić dostęp do sieci w głównym wątku - to źle. – rmaddy

+2

Dlaczego używasz dotyku na drugim przycisku? Jeśli używasz touch up wewnątrz, powinieneś być w porządku. – Rob

Odpowiedz

21

Ustaw właściwość obu przycisków na TAK.

Jeśli to nie wystarczy, każdy z przycisków wywołaj udostępniony obiekt aplikacji beginIgnoringInteractionEvents, gdy rozpocznie się jego działanie i zadzwoń pod numer endIgnoringInteractionEvents po zakończeniu jego działania.

+0

Gdybym mógł głosować na tę odpowiedź więcej, zrobiłbym - co za oszczędność czasu! – chrysAllwood

+0

wydaje się, że exclusiveTouch nie działa w iOS9? –

+0

Działa jak urok w iOS10! – ronatory

0
for(UIView* v in self.view.subviews) 
{ 
    if([v isKindOfClass:[UIButton class]]) 
    { 
     UIButton* btn = (UIButton*)v; 
     [yourButton setExclusiveTouch:YES]; 
    } 
} 

to zadziała!

Powiązane problemy