Я пишу приложение для прогнозирования погоды, и мне нужен компонент, который может по-разному реагировать на горизонтальное и вертикальное пролистывание.
При горизонтальном пролистывании я хочу просмотреть карту или страницу с прогнозом для другого местоположения (приложениепозволяет задать больше местоположений).
Если я проведу пальцем по вертикали, я хочу прокрутить вниз и просмотреть дополнительную информацию о текущем местоположении.
Я попытался использовать комбинацию панорамирования и ответа прокрутки,но это позволило мне реагировать только на горизонтальное перелистывание.
Я не уверен, является ли комбинация Pan responseder и ScrollView хорошим способом решения этой проблемы ... У вас есть какие-нибудь другие идеи?
// Конструктор колоды карт
constructor(props) {
super(props);
const position = new Animated.ValueXY();
const panResponder = PanResponder.create({
onStartShouldSetPanResponder: () => true,
onPanResponderMove: (event, gesture) => {
position.setValue({ x: gesture.dx });
},
onPanResponderRelease: (event, gesture) => {
if (gesture.dx > SWIPE_THRESHOLD) {
this.forceSwipe('right');
} else if (gesture.dx < -SWIPE_THRESHOLD) {
this.forceSwipe('left');
} else {
this.resetPosition();
}
}
});
this.state = { panResponder, position, index: 0 };}
// Визуализация карты погоды в компоненте колоды карт
return (
<Animated.View
key={item.id}
style={[this.getCardStyle(), styles.cardStyle]}
{...this.state.panResponder.panHandlers}
>
<ScrollView><Text>content...<Text><ScrollView>
</Animated.View>
);