реагировать на родной PanResponder, чтобы получить текущую позицию scrollView

0

Я хочу получить текущее смещение 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}>
  • 0
    Почему вы хотите использовать PanResponder? Метод OnScroll в ScrollView предназначен для отслеживания положения прокрутки.
  • 0
    @dvinemultimedia я знаю, но я хочу использовать жест касания ...
Теги:
react-native

2 ответа

0
Лучший ответ

Предполагая, что благодаря сенсорному выпуску вы подразумеваете момент, когда одно касание останавливается, вы можете сделать это с помощью 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.

  • 0
    я думаю, на документах нет прикосновения?
0

Не знаете, почему вы хотите получить доступ к смещению 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню