Vodniki · 04
Vnos in geste
Zapisujte kazalec, vlečenje, drsenje in drug vnos v vrednosti, druge vrednosti pa naj jim sledijo.
input(target, adapter)
Vnosni adapter dogodke brskalnika spremeni v zapise vrednosti. input(ref, adapter) ga pripne kot krmilnik; če je deklariran v useAnimated, se odstrani ob odklopu ali ko se odvisnost spremeni.
Adapterji: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput in swipeInput.
Pripravljanje primera …
Vlečenje z mejami in gibanjem po spustu
dragInput podpira vlečenje s kazalcem in puščičnimi tipkami, bounds z uporom elastic, momentum po spustu in funkcijo settle, ki iz predvidenega položaja izbere mesto mirovanja.
Na zaslonih na dotik med priklopom cilju nastavi touch-action, da brskalnik geste ne prevzame za drsenje. Vrednost, ki jo nastavite sami, ima prednost.
Pripravljanje primera …
Ščip, vidno polje in mediji
Neobvezni tretji argument input prejme vsak dogodek odziva, zato lahko adapter tudi na svojih robovih zažene gibanje.
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
Preslikave dogodkov iz React Nativa delujejo na dogodkih DOM. Pri dogodku drsenja se nativeEvent.contentOffset, contentSize in layoutMeasurement preberejo iz drsnega elementa, zato se preslikave ScrollView prenesejo nespremenjene.
const scrollY = useAnimatedValue(0);
<div onScroll={Animated.event([{ nativeEvent: { contentOffset: { y: scrollY } } }])} />;