2013-04-14 2 views
5

이것은 간단한 문제이지만 해결하기 까다로운 문제입니다.버튼이 동시에 누르는 것을 방지합니다.

동일한 기능을 수행하는 두 개의 버튼이 있습니다.

버튼에 대해 다른 터치 이벤트를 설정했습니다. 이 방법이 도움이되지만, 동시에 누르는 것은 가능합니다. 느린 연결에서는 훨씬 더 쉬울 것입니다.

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

이 버튼의 기능은 무엇이며 왜 "느린 연결"에 묶여 있습니까? – J2theC

+1

메인 스레드에서 네트워크 액세스를하고있는 것처럼 들릴 수 있습니다. – rmaddy

+2

두 번째 버튼을 터치하는 이유는 무엇입니까? 두 가지 모두에서 위로 터치를 사용하면 괜찮을 것입니다. – Rob

답변

21

두 단추의 exclusiveTouch 속성을 YES로 설정하십시오.

충분하지 않다면 각 버튼은 작업이 시작될 때 beginIgnoringInteractionEvents 공유 응용 프로그램 개체를 호출하고 작업이 끝나면 endIgnoringInteractionEvents을 호출하게합니다.

+0

내가이 답변에 더 많은 투표를 할 수 있다면, 나는 시간을 얼마나 절약 할 수 있을까? – chrysAllwood

+0

iOS9에서 exclusiveTouch가 작동하지 않는 것 같습니다. –

+0

iOS10의 매력처럼 작동합니다! – ronatory

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

이렇게하면됩니다.

관련 문제