2011-04-25 3 views
0

UIImageView의 하위 클래스 인 TouchImageView 클래스가 있습니다. 이 클래스의 객체에서 터치 이벤트를 처리하기를 원합니다. 그것은 모든 UIImageView의 속성과 메서드를 상속하며 사용자 상호 작용을 활성화하고 [init] 및 [touchesBegan : WithEvent]를 재정의합니다. 그리고이 클래스의 객체는 코드로 생성되고 기본 뷰에 하위 뷰로 추가됩니다. 지금 필요한 것은이 "TouchImageViews"에 의해 시작된 터치 이벤트를 처리하는 것입니다. Interface Builder에서 컨트롤을 생성 한 다음 컨트롤러의 IBAction을 사용하여 특정 이벤트를 연결하는 방법을 알고 있습니다. 그러나 프로그래밍 방식으로 작성된보기를 처리하는 방법을 찾을 수 없습니다. TouchImageView 객체는 런타임 중에 나중에 만들어 지므로 마우스로 드래그 앤 드롭 할 수 없습니다.동일한 클래스의 서로 다른 객체에서 iOS의 동일한 터치 이벤트를 처리하는 방법은 무엇입니까?

질문 : 처리기 [touchesBegan : WithEvent]가 "보기"중 어떤 이벤트를 시작했는지 어떻게 알 수 있습니까?

두 단어로 설명 할 수없는 경우이 주제 또는 필수 절차가 포함 된 Apple 코드 샘플을 읽어 보시기 바랍니다.

미리 감사드립니다.

답변

1

제스처 인식기는 좋은 방법입니다. 이 객체는 모든보기 (즉, 클래스가 UIView에서 상속 한 객체)에 첨부 할 수있는 객체입니다. 응답하려는 각 유형의 터치 제스처에 제스처 인식기를 연결 한 다음 원하는 방식으로 처리 할 수있는 선택기 메서드를 작성합니다.

애플의 Event Handling Guide for iOS, chapter 3은 제스처 인식기를 만드는 코드와 터치 이벤트를 처리하는 선택기 코드의 코드와 함께 꽤 좋은 설명을 제공합니다. 일단 익숙해지면 사용하기 쉽고 코드가 거의 필요하지 않습니다.

+0

감사합니다. 제스처 인식 방법은이 상황에서 최적의 솔루션입니다. 누군가 다른 사람이 이것을 검색 할 경우 UITapGestureRecognizer를 만들었습니다 (적절한 액션 서명으로 할당하고 초기화했습니다). 그런 다음 이벤트를 발생시키고 자하는 뷰에이 새로운 제스처 인식기를 추가했습니다 (보기에는 addGestureRecognizer 메서드가 있음). 여기에 몇 가지 예제가 있습니다 [link] (http://iphonedevelopertips.com/event-handling/gestures-recognizers-tap-pinchzoom-rotate-swipe-pan-long-press.html) –

관련 문제