Verwenden mehrerer Viewports in DirectManipulation
Wenn Sie mehrere Viewports verwenden, bestimmt Treffertests, welche Viewports von Benutzereingaben betroffen sind, indem die Bildschirmposition eines Kontakts erfasst und ermittelt wird, welches Viewportrechteck der Kontakt trifft.
Ein häufiges Szenario in der direkten Bearbeitung ist das Platzieren eines Viewports in einem anderen, auch als Schachtelungs-Viewports bezeichnet. Wenn der Kontakt mehrere Viewports erreicht, bestimmt die Reihenfolge der SetContact-Aufrufe durch den WndProc des Fensters die Beziehung zwischen übergeordnetem und untergeordnetem Element der geschachtelten Viewports.
Regel: Das untergeordnete Element sollte SetContact aufrufen,bevor das übergeordnete Element aufgerufen wird.
Ein Kontakt wird in einem Viewport angezeigt. SetContact sollte zuerst im orangen (untergeordneten) Viewport und dann im grünen (übergeordneten) Viewport aufgerufen werden, um die richtige Hierarchie einzurichten.
Ziel des richtigen Viewports
Ein Kontakt kann einer beliebigen Anzahl von Viewports zugeordnet werden, und jeder Kontakt kann einem anderen Satz von Viewports zugewiesen werden.
Jeder Viewport kann nach Bedarf so konfiguriert werden, dass er bestimmte Interaktionen unterstützt.
Basierend auf diesen Einstellungen identifiziert Direct Manipulation , welcher Viewport die Eingabe verarbeitet. Der untergeordnete Viewport in der Treffertesthierarchie hat die erste Chance, die Eingabe zu verarbeiten. Sowohl verketten als auch übergeordnete Heraufstufung können jedoch ändern, welcher Viewport die Eingabe verarbeitet.
Verketten
Wenn das Ende des Inhalts während einer Bearbeitung erreicht wird, wendet direct manipulation einen Begrenzungseffekt an, um anzugeben, dass der Inhalt nicht weiter gehen kann. Wenn jedoch ein untergeordneter Viewport mit einem übergeordneten Viewport verkettet ist, wird dieser Effekt unterdrückt. Stattdessen verarbeitet der nächstgelegene Vorgängersichtport in der Treffertesthierarchie, der die Bearbeitung unterstützt, die Eingabe. Wenn die Richtung der Bearbeitung umgekehrt wird, sodass der Vorgänger zu dem Punkt zurückkehrt, an dem die Verkettung ausgelöst wurde, wird die Bearbeitung "aufgehoben", und das Steuerelement wird zurück an den untergeordneten Viewport übertragen.
Wenn der Benutzer den untergeordneten Viewport bis zum Rand des Inhalts schwenkt, "verkettet" die Bearbeitung mit dem übergeordneten Viewport, und der Benutzer beginnt stattdessen, den übergeordneten Inhalt zu verschieben.
Hinweis
Die X- und Y-Achse verketten unabhängig voneinander. Wenn also ein diagonaler Schwenk auf die x-Grenze vor der y-Grenze trifft, bewegt die Manipulation das übergeordnete Element in x-Richtung, während das untergeordnete Element weiterhin in y-Richtung bewegt wird. Um die Verkettung zu aktivieren oder zu deaktivieren, rufen Sie die SetChaining-API für den untergeordneten Viewport auf.
Schienen
Das Angeben von Rails in der Konfiguration eines Viewports wirkt sich auf die Art und Weise aus, wie Eingaben vom Viewport verkettet werden. Insbesondere kann die Eingabe nicht von einem gegitterten untergeordneten Viewport zu seinem übergeordneten Viewport im "unrailed"-Schwenkmodus von Schienen verkettet werden. Um eingaben beim Festlegen von Schienen zu verketten, muss der Benutzer vertikal oder horizontal verschoben und an den Schienen gesperrt sein.
Zoomen
Wenn ein untergeordneter Viewport in einem übergeordneten Element geschachtelt ist und beide für den Zoom konfiguriert sind, kann eine Zoombearbeitung vom untergeordneten zum übergeordneten Element verkettet werden. Wenn die Bearbeitung jedoch fortgesetzt wird, funktioniert sie nur für das übergeordnete Element und kann die "Verknüpfung" mit dem untergeordneten Element nicht aufheben. Wenn der Benutzer einen Zoom vom untergeordneten auf das übergeordnete Element verkettet, wird das untergeordnete Element durch direkte Bearbeitung angehalten, bis alle kontakte, die der Bearbeitung zugeordnet sind, vom Bildschirm entfernt werden. An diesem Punkt wird das untergeordnete Element vom Anhalten befreit, und der Benutzer kann den untergeordneten Viewport verschieben.
Gestenziel: Übergeordnete Heraufstufung
Das Targeting von Gesten ist der Prozess, bei dem Direct Manipulation Kontakte gruppiert und bestimmt, welcher Viewport die Eingabe verarbeitet. Übergeordnete Heraufstufung bezieht sich auf Fälle, in denen die Eingabe vom untergeordneten Element an das übergeordnete Element übertragen wird. Wenn ein Benutzer beispielsweise zwei Kontakte in einem untergeordneten Viewport ablegt, der nur für den Bildlauf konfiguriert ist, wird die Eingabe auf das übergeordnete Element heraufgestuft, sodass das Zoomen erfolgt. Die übergeordnete Heraufstufung erfolgt unabhängig davon, ob die Verkettung im untergeordneten Viewport aktiviert ist.
Im Gegensatz zur Verkettung wird die übergeordnete Heraufstufung nicht umgekehrt. Der übergeordnete Viewport verarbeitet die Interaktionseingabe so lange, bis alle Kontakte aufgehoben werden (untergeordnete Viewports beenden die Verarbeitung der Eingabe).