2010-06-23 3 views
0

제가 생각할 수있는 가장 좋은 방법은 touchesBegan 이벤트 메소드에서 타이머를 시작하는 것입니다. touchesEnded 이벤트가 도착하기 전에 타이머가 만료되면 사용자가 화면을 누르고 있음을 알 수 있습니다. touchesMoved 이벤트가 호출되면 이동하지 않고 누르고있는 것을 감지 할 수 있도록 타이머를 재설정하면됩니다.사용자가 움직이지 않고 화면에서 손가락을 누르고 있다고 어떻게 느낄 수 있습니까?

정확하게 처리 할 수있는 기능이 iOS SDK에 내장되어 있습니까? 또는 더 나은, 더 간단하고 빠른 방법은 누구나 생각할 수 있습니까?

미리 도움 주셔서 감사합니다.

답변

1

UILongPressGestureRecognizer을 사용해보세요.

UILongPressGestureRecognizer* gr = [[UILongPressGestureRecognizer alloc] 
            initWithTarget:theTarget 
              action:@selector(someAction:)]; 
// change options of gr if you like. 
// default: tolerate movement up to 4 px, fire the event after 0.4 secs. 
[theView addGestureRecognizer:gr]; 
[gr release]; 

사용자가 길게 누르면 [theTarget someAction:gr]이 호출됩니다.

1

움직임이 없는지 테스트 할 수있는 다른 방법을 모른다. 나는 당신이 어떻게 그렇게하고 있다고 생각합니다.

touchesMoved은 매우 민감하고 육안으로 볼 수없는 상태에서 손가락을 움직이기 때문에 타이머를 재설정하는 데 거의 어려움이 있습니다 (NSLogs를 사용하여 이것을 테스트 해보십시오.) 내가 무엇을 의미하는지).

타이머를 재설정하기 전에 touchesMoved 값이 원래 값에서 변경된 정도에 대한 일부 유형의 임계 값 차이 값을 구현할 수 있습니다.

+0

아주 좋은 생각, 고마워! – BeachRunnerFred

관련 문제