Sprievodcovia · 04

Vstup a gestá

Zapisujte ukazovateľ, ťahanie, posúvanie a ďalší vstup do hodnôt a nechajte iné hodnoty, aby ich nasledovali.

input(target, adapter)

Adaptér vstupu prevádza udalosti prehliadača na zápisy hodnôt. input(ref, adapter) ho pripojí ako controller; deklarovaný vnútri useAnimated sa odoberie pri odpojení alebo pri zmene závislosti.

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

Príprava príkladu…

Ťahanie s hranicami a pohybom po pustení

dragInput podporuje ťahanie ukazovateľom aj šípkami, bounds s odporom elastic, momentum po pustení a funkciu settle, ktorá vyberie miesto zastavenia podľa predpokladanej polohy.

Na dotykových obrazovkách nastaví cieľu touch-action, kým je pripojený, aby prehliadač nepovažoval gesto za posúvanie. Hodnota, ktorú nastavíte sami, má prednosť.

Príprava príkladu…

Zovretie, viewport a médiá

Voliteľný tretí argument input dostáva každú udalosť reakcie, takže adaptér môže spúšťať pohyb aj na svojich okrajoch.

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

Mapovanie udalostí z React Native funguje na udalostiach DOM. Pri udalosti posúvania sa nativeEvent.contentOffset, contentSize a layoutMeasurement čítajú z posúvaného prvku, takže mapovania ScrollView sa prenesú bez zmeny.

Header.jsx
const scrollY = useAnimatedValue(0);

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

Hľadať

Píšte a hľadajte v dokumentácii.