Я хочу получить текущее смещение y моего scrollView с помощью PanResponder. это то, что я сделал до сих пор, но я не мог найти способ получить текущее смещение y
componentWillMount() {
this._panResponder = PanResponder.create({
onMoveShouldSetPanResponder: (evt, gestureState) => true,
onPanResponderRelease: (evt, gestureState) => {
console.log(this.scrollView) //this logs my scrollView
}
});
}
<ScrollView ref={(view) => this._scrollView = view} {...this._panResponder.panHandlers}>
Предполагая, что благодаря сенсорному выпуску вы подразумеваете момент, когда одно касание останавливается, вы можете сделать это с помощью ScrollVIew onTouchEnd prop.
Я бы сделал это, используя onScroll, чтобы сохранить смещение где-нибудь и onTouchEnd, чтобы сделать что-то с этим смещением.
<ScrollView
onScroll={(event) => {
this.offsetY = event.nativeEvent.contentOffset.y;
}}
onTouchEnd={(event) => {
console.log('offsetY:', this.offsetY);
console.log('touch info:', event.nativeEvent);
}}
>
{content of the scroll view}
</ScrollView>
Если с помощью touch release вы имели в виду, что должны быть нулевые касания, вы можете проверить это с событием, которое передается onTouchEnd.
Не знаете, почему вы хотите получить доступ к смещению y в ответе panResponder. Но есть способ сделать это. Сначала вам нужно определить локальную переменную в вашем компоненте, например:
this.currentScrollViewX=0;
this.currentScrollViewY=0;
Как правило, вы можете проследить смещение scrollView при прокрутке события. Вы можете добавить реквизиты в ScrollView
например
<ScrollView onScroll = {e => this._onScroll(e)} ...>
...
</ScrollView>
затем определите метод _onScroll
в своем компоненте, обновите currentScrollViewX и currentScrollViewY при прокрутке
_onScroll(e){
this.currentScrollViewX = e.nativeEvent.contentOffset.x;
this.currentScrollViewY = e.nativeEvent.contentOffset.x;
}
Затем в обработчике onPanResponderRelease
вы всегда можете получить последнее смещение y, this.currentScrollViewY
Если вы хотите перетащить анимацию в ScrollView с помощью PanResponder, у нее будут некоторые проблемы, когда PanResponder перетаскивает и прокручивает список прокрутки. Более подробно здесь https://github.com/facebook/react-native/issues/1046