2011-02-07 2 views
1

iPhone 용으로 개발 된 그림 응용 프로그램에 손목 거부 기능을 구현하려고 시도했지만 터치 이벤트에서 이상한 동작을 발견했습니다. 화면에 손바닥을 놓고 손의 일부 영역을 지속적으로 들어 올린 다음 다시 낮추면 touchBegin 이벤트는 많이 발생하지만 터치 이벤트는 몇 번 발생합니다. iOS의 터치 처리 메커니즘에 대해 모르는 뭔가가 있습니까? 각 UITouch 객체에 속하는 touchEnd 및 touchBegin 이벤트 수가 같아야합니까?iPhone에서 touchEnd 이벤트가 누락되었습니다.

내 창에는 하나의보기 만 있으며 전체 화면을 차지합니다. 보기와 창 모두 멀티 터치를 지원합니다. touchBegin 및 touchEnd 메소드의 시작 부분에 NSLog를 사용하여 터치 횟수를 인쇄하여 이벤트를 계산합니다. 그래서 하나의 이벤트에 여러 개의 접촉에 대한 정보가 포함될 수 있다는 사실을 고려하고 있습니다.

+0

StackOverflow에 오신 것을 환영합니다. 나는 당신의 말로 혼란 스럽다 :'각 UITouch 객체에 속하는 touchEnd 및 touchBegin 이벤트의 수는 같아야하지 않습니까? '. 다시 말해도 될까요? – Moshe

+0

다시 말하자면 : 내가 아는 한, 터치가 OS에 의한 약간의 인터럽트에 의해 취소되지 않는 한, 터치에 대한 touchBegin 이벤트를 얻은 후에는 어떤 시점에서 해당 touchEnd 이벤트를 얻어야합니다. – sct

답변

3

취소 된 이벤트에 처리기를 제공하는 것을 잊지 마세요. touchesBegan과 일치하는 touchesEnded 이벤트없이 touchesCancelled 통화를받을 수 있습니다.

+0

나는 이걸 시험해 볼거야. 내가 전에 언급 한 행동이 전화 같은 것과 같은 어떤 방해도 관계없이 일어나기 때문에 나는 그것에 대해 전에 생각하지 않았다. – sct

+0

나는 이것을 시도해보고 문제가 귀하가 추측 한 것과 같은 touchCanceled 이벤트임을 확인했습니다. OS가 정확히 터치를 추적 할 수없는 경우 터치를 취소하는 것처럼 보입니다. 알림 주셔서 감사. – sct

1

touchesBegan:withEvent:touchesEnded:withEvent: 전화 번호를 보는 대신 NSSetUITouch 개 개체를 전달해야합니다. 예를 들어, 한 손가락을 두 번째 손가락으로 화면에 대면 두 개의 touchesBegan:withEvent: 전화를 받게됩니다. 화면에서 두 손가락을 동시에 들어 올리면 touchesEnded:withEvent: 전화가 걸립니다. NSSetUITouch 개체가 전달되면 두 손가락이 들었음을 나타냅니다.

+0

지난 두 문장에서 말했듯이, 나는 그 사실을 알고 있기 때문에 사건 자체를 세지 않고 사건의 횟수를 세지 만. – sct

+0

질문을 잘못 읽었습니다. hotpaw2의 대답에 설명 된대로 사건을 만회했을 가능성이 큽니다. – pwc

관련 문제