DirectManipulation에서 여러 뷰포트 사용

여러 뷰포트를 사용하는 경우 적중 횟수 테스트는 연락처의 화면 위치를 가져와 연락처가 적중하는 뷰포트 사각형을 결정하여 사용자 입력의 영향을 받는 뷰포트를 결정합니다.

직접 조작의 일반적인 시나리오는 하나의 뷰포트를 중첩 뷰포트라고도 하는 다른 뷰포트 안에 배치하는 것입니다. 연락처가 둘 이상의 뷰포트에 도달하면 창의 WndProc에 의한 SetContact 호출 순서에 따라 중첩된 뷰포트의 부모-자식 관계가 결정됩니다.

규칙: 자식 요소는 부모를 호출하기 전에 SetContact를 호출해야 합니다.

적중 테스트의 계층 구조를 보여 주는 다이어그램

뷰포트에서 연락처가 내려옵니다. 먼저 주황색(자식) 뷰포트에서 SetContact를 호출한 다음 녹색(부모) 뷰포트를 호출하여 올바른 계층 구조를 설정해야 합니다.

올바른 뷰포트 대상 지정

연락처를 임의의 뷰포트와 연결할 수 있으며 각 연락처를 다른 뷰포트 집합에 할당할 수 있습니다.

각 뷰포트는 필요에 따라 특정 상호 작용을 지원하도록 구성할 수 있습니다.

이러한 설정에 따라 직접 조작 은 입력을 처리하는 뷰포트를 식별합니다. 적중 테스트 계층 구조에서 자식 뷰포트가 입력을 처리할 수 있는 첫 번째 기회가 있습니다. 그러나 체인 및 부모 승격은 입력을 처리하는 뷰포트를 변경할 수 있습니다.

체이닝

조작 중에 콘텐츠의 끝에 도달하면 직접 조작 은 경계 효과를 적용하여 콘텐츠가 더 이상 진행되지 않음을 나타냅니다. 그러나 자식 뷰포트가 부모 뷰포트에 연결된 경우 이 효과는 표시되지 않습니다. 대신, 조작을 지원하는 적중 테스트 계층에서 가장 가까운 상위 뷰포트가 입력을 처리합니다. 상위 항목이 연결이 트리거된 지점으로 돌아가도록 조작 방향이 반전되면 조작이 "연결 해제"되어 컨트롤이 자식 뷰포트로 다시 전송됩니다.

연결된 조작을 보여 주는 다이어그램

사용자가 자식 뷰포트를 콘텐츠 가장자리로 이동하면 조작이 부모 뷰포트에 "체인"되며, 대신 부모 콘텐츠 이동이 시작됩니다.

참고

X축과 Y축은 서로 독립적으로 연결되므로 대각선 팬이 y 경계 앞의 x 경계에 도달하면 조작은 자식이 y 방향으로 계속 이동하면서 부모를 x 방향으로 이동합니다. 체인을 사용하거나 사용하지 않도록 설정하려면 자식 뷰포트에서 SetChaining API를 호출합니다.

레일

뷰포트 구성에서 레일을 지정하면 뷰포트에서 입력이 연결된 방식에 영향을 줍니다. 특히 입력은 레일의 "unrailed" 이동 모드에서 레일 자식 뷰포트에서 부모로 연결할 수 없습니다. 레일을 설정할 때 입력을 연결하려면 사용자가 세로 또는 가로로 이동한 후 레일에 잠겨 있어야 합니다.

확대/축소

자식 뷰포트가 부모 내부에 중첩되고 둘 다 확대/축소용으로 구성된 경우 확대/축소 조작이 자식에서 부모로 연결될 수 있습니다. 그러나 조작이 계속되면 부모에서만 작동하며 자식에 대해 "언체인"할 수 없습니다. 사용자가 자식에서 부모로 확대/축소를 연결하면 직접 조작 은 조작과 관련된 모든 연락처가 화면에서 제거될 때까지 자식이 일시 중단됩니다. 이 시점에서 자식이 일시 중단에서 해제되고 사용자가 자식 뷰포트를 이동하면 됩니다.

제스처 대상 지정: 부모 승격

제스처 대상 지정직접 조작 그룹이 함께 접촉하고 입력을 처리하는 뷰포트를 결정하는 프로세스입니다. 부모 승격 은 입력이 자식에서 부모로 전송되는 경우를 나타냅니다. 예를 들어 사용자가 스크롤용으로만 구성된 자식 뷰포트 내에서 두 개의 접점과 꼬집기를 놓으면 확대/축소가 수행되도록 입력이 부모로 승격됩니다. 부모 승격은 자식 뷰포트에서 체인을 사용할 수 있는지 여부에 관계없이 발생합니다.

체인과 달리 부모 승격은 반전되지 않습니다. 부모 뷰포트는 모든 연락처가 해제될 때까지 상호 작용 입력을 계속 처리합니다(자식 뷰포트는 입력 처리를 중지).