2013-07-09 3 views
0

UIView에 두 개의 사용자 정의보기가 하위보기로 있습니다. 두 하위 뷰 중 하나에서 발생하는 모든 상호 작용을 취하고 다른 하위 뷰와 동일한 작업을 수행하려고합니다. 여기에는 확대/축소, 회전, 회전 등과 같은 모든 가능한 상호 작용이 포함됩니다. 가장 쉽고/깔끔한 방법은 무엇입니까?iOS 전달 상호 작용

답변

0

확대/축소, 패닝, 길게 누름과 같은 특정 제스처를 인식하는 데만 관심이있는 경우 특정 유형의 제스처를들을 수있는 UIGestureRecognizer 하위 클래스를 사용하는 것이 좋습니다. 모든 항목을 하나의보기에 추가하고 둘 중 하나가 트리거 될 때마다보기의 크기를 늘리거나 내용을 이동하는 등의 작업을 모두 수행하십시오.

또 다른 비슷한 옵션은 UIView의 터치 처리 방법을 구현하고 각 힘든 이벤트에 직접 응답하여 두보기 모두에서 작업을 모방하는 것입니다. 그 방법은 다음과 같습니다

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    //called when a touch or touches begin 
} 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    //called when a touch or touches move 
} 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    //called when a touch or touches end 
} 
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { 
    //called when a touch or touches are interrupted in some way, such as a phone call 
} 

당신은 UIResponder 참조 here에서 그 방법에 대한 자세한 내용을보실 수 있습니다.

OTOH, 터치 이벤트를 실제로 합성하려면 해킹을해야합니다. Here은 프로그래밍 방식으로 터치를 시뮬레이트 할 수 있도록 UITouch 클래스의 기능을 확장하는 방법에 대한 자습서입니다. 개인용 API를 사용하기 때문에이 앱을 App Store에 제출하려는 경우 사용해야하는 솔루션은 아닙니다.

+0

[subview1 touchesBegan : touches withEvent : event]를 사용하여 터치 핸들링 메소드와의 상호 작용을 직접 전달하려고했습니다. 나는 그 접근법으로 무한 루프를 얻는다. 어떻게 두 subviews UIView 상호 작용을 전달할 것이라고? – user1802143

+0

발견 한대로이 방법을 사용하면 무한 루프가 생성됩니다. 대신, 당신이하고 싶은 것은'touchesBegan : withEvent'와 다른 메소드들 안에있는 로직을 취해서 동시에 두 뷰에 적용하는 것입니다. – Jumhyn

+0

나는 잘 모르겠다. 두 개의 하위 뷰는 내가 액세스 할 수없는 타사 프레임 워크에서 가져온 것입니다. 나는 단순히 터치 이벤트를 전달하지 않고 그것을 할 수있는 방법을보고 있지 않습니다. – user1802143