Partilhar via


Usando vários visores no DirectManipulation

Ao usar vários visores, o Testede clique determina quais visores são afetados pela entrada do usuário, tomando a localização da tela de um contato e determinando qual retângulo de visor o contato acessa.

Um cenário comum na Manipulação Direta é colocar um visor dentro de outro, também conhecido como visores de aninhamento. Se o contato atingir mais de um visor, a ordem das chamadas SetContact pelo WndProc da janela determinará a relação pai-filho dos visores aninhados.

Regra: o elemento filho deve chamar SetContactantes de chamar o pai.

diagrama mostrando hierárquico de teste de clique

Um contato aparece em um visor. SetContact deve primeiro ser chamado no visor laranja (filho) e, em seguida, no visor verde (pai) para estabelecer a hierarquia correta.

Direcionando o visor correto

Um contato pode ser associado a qualquer número de visores e cada contato pode ser atribuído a um conjunto diferente de visores.

Cada visor pode ser configurado para dar suporte a interações específicas, conforme necessário.

Com base nessas configurações, a Manipulação Direta identifica qual visor manipula a entrada. O visor mais filho na hierarquia de teste de clique tem a primeira chance de lidar com a entrada. No entanto, o encadeamento e a promoção pai podem alterar qual visor manipula a entrada.

Encadeamento

Quando o final do conteúdo é atingido durante uma manipulação, a Manipulação Direta aplica um efeito de limite para indicar que o conteúdo não pode ir mais longe. No entanto, se um visor filho for encadeado a um visor pai, esse efeito será suprimido. Em vez disso, o visor ancestral mais próximo na hierarquia de teste de clique que dá suporte à manipulação manipulação manipula a entrada. Se a direção da manipulação for invertida de modo que o ancestral retorne ao ponto em que o encadeamento foi disparado, a manipulação "unchains" e o controle serão transferidos de volta para o visor filho.

diagrama mostrando a manipulação encadeada

Quando o usuário exibe o visor filho até a borda do conteúdo, a manipulação "encadeia" para o visor pai e o usuário começa a fazer movimento panorâmico do conteúdo pai.

Observação

Os eixos X e Y encadeiam independentemente uns dos outros, portanto, se uma panela diagonal atingir o limite x antes do limite y, a manipulação moverá o pai na direção x enquanto continua a mover o filho na direção y. Para habilitar ou desabilitar o encadeamento, chame a API SetChaining no visor filho.

Trilhos

Especificar trilhos na configuração de um visor afeta a maneira como a entrada é encadeada do visor. Especificamente, a entrada não pode encadear de um visor filho com grade para seu pai no modo panorâmico "sem corrimão" dos trilhos. Para encadear a entrada quando os trilhos são definidos, o usuário deve ter panorâmica vertical ou horizontalmente e estar bloqueado nos trilhos.

Zoom

Se um visor filho estiver aninhado dentro de um pai e ambos estiverem configurados para zoom, uma manipulação de zoom poderá ser encadeada de filho para pai. No entanto, se a manipulação continuar, ela funcionará apenas no pai e não poderá "remover a cadeia" do filho. Se o usuário encadear um zoom de filho para pai, a Manipulação Direta suspenderá o filho até que todos os contatos associados à manipulação sejam removidos da tela. Neste ponto, o filho é liberado da suspensão e o usuário pode analisar o visor filho.

Direcionamento de gestos: promoção pai

Direcionamento de gestos é o processo pelo qual a Manipulação Direta agrupa contatos e determina qual visor processa a entrada. Promoção pai refere-se a casos em que a entrada é transferida do filho para o pai. Por exemplo, quando um usuário coloca dois contatos e pinça dentro de um visor filho configurado apenas para rolagem, a entrada é promovida para o pai para que o zoom ocorra. A promoção pai ocorre independentemente de o encadeamento estar habilitado no visor filho.

Ao contrário do encadeamento, a promoção pai não é revertida. O visor pai continua processando a entrada de interação até que todos os contatos sejam levantados (os visores filho param de processar a entrada).