Průvodci · 04

Vstup a gesta

Zapisujte ukazatel, tažení, posouvání a další vstup do hodnot a nechte jiné hodnoty, aby je následovaly.

input(target, adapter)

Adaptér vstupu převádí události prohlížeče na zápisy hodnot. input(ref, adapter) ho připojí jako controller; deklarovaný uvnitř useAnimated se odebere při odpojení nebo při změně závislosti.

Adaptéry: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput a swipeInput.

Příprava příkladu…

Tažení s mezemi a pohybem po puštění

dragInput podporuje tažení ukazatelem i šipkami, bounds s odporem elastic, momentum po puštění a funkci settle, která vybere místo zastavení podle předpokládané polohy.

Na dotykových obrazovkách nastaví cíli touch-action, dokud je připojený, aby prohlížeč nepovažoval gesto za posouvání. Hodnota, kterou nastavíte sami, má přednost.

Příprava příkladu…

Sevření, viewport a média

Volitelný třetí argument input dostává každou událost reakce, takže adaptér může spouštět pohyb i na svých okrajích.

inputs.jsx
const card = useRef(null);

const pinch = useAnimated(
  { scale: 1, rotation: 0 },
  (value) => {
    input(card, pinchInput({ scale: value.scale, rotation: value.rotation, minScale: 0.5 }));
  },
  [],
);

const reveal = useAnimated(
  0,
  (value) => {
    input(card, viewportInput({ once: true }), (event) => {
      if (event.phase === 'in') spring(value, { toValue: 1 }).start();
    });
  },
  [],
);

Animated.event

Mapování událostí z React Native funguje na událostech DOM. U události posouvání se nativeEvent.contentOffset, contentSize a layoutMeasurement čtou z posouvaného prvku, takže mapování ScrollView se přenesou beze změny.

Header.jsx
const scrollY = useAnimatedValue(0);

<div onScroll={Animated.event([{ nativeEvent: { contentOffset: { y: scrollY } } }])} />;

Hledat

Pište a hledejte v dokumentaci.