2010-08-03 3 views
3

내 문제는 텍스트 뷰 컨트롤에서 애플 돋보기와 비슷한 컨트롤을 만드는 것과 관련이 있습니다. 여기서 돋보기를 팝업 한 다음 손가락을 드래그하면됩니다. 원하는 위치를 선택하십시오.아이폰 SDK에서 손가락이 미끄러 져 움직이는 것을 감지했습니다.

긴 고정 터치 감지에 필요한 모든 방법을 만들었습니다. 이제 내 손가락이 미끄러 져 UIView 검색해야합니다. 이 일을 어떻게 만드는지 정확하게 알 수는 없지만 누군가 나를 올바른 방향으로 인도 할 수 있습니까?

답변

2

는 UIResponder를 사용하여 터치를 감지 할 수있는 감동 것을보고 할 필요가있는 UIView의 상속 방법

당신이 접촉을 상속하고 하위 클래스에서 할 수 있습니다보고 할 수 있도록하려면
– touchesBegan:withEvent: 
– touchesMoved:withEvent: 
– touchesEnded:withEvent: 
– touchesCancelled:withEvent: 

UIViews 당신 위 메서드 내에서 호출 할 대리자 메서드를 정의 할 수 있습니다. 위임자를 일부 중앙보고 클래스로 설정하면 모든 접촉과이를받은보기가 식별 될 수 있습니다. 정상적으로 작동하는 터치 이벤트하려는 경우

[[self superview] touchesBegan:touches withEvent:event];

: 터치 이벤트를 전달하는 즉 잊지 마세요.

+0

아 참 멋지다. 이제 확인해 보겠습니다. 그래도 올바른 방법처럼 보입니다. – johnw188

+0

실제로 하위 클래스 및 대리자 메서드를 사용하는 대신 [[TouchCatcher sharedSingleton] objectReceivedTouch : self]와 같은 모든 터치보고를 처리하는 싱글 톤 클래스를 정의하고 위에 표시된 터치 클래스 내에서 호출하면됩니다. –

0

감동을 다루는 방법에서 여러 가지 하위 뷰가 포함 된 수퍼 뷰에 히트 테스트를 보낼 수 있습니다. 히트 테스트는보기의 현재 지점에서 가장 깊은보기를 반환합니다. 그것은 이렇게 보일 것입니다.

//Just detected that the finger is stationary 
MyView *touchedView = [containerView hitTest:touchPoint withEvent:event]; 
[touchedView performSomeAction]; 

일부 클래스 검사를 수행하여보기가 실제로 터치에 반응 할 수있는보기인지 확인해야합니다.

관련 문제