Может ли Panresponder наследовать сенсорное сенсорное событие? - PullRequest
0 голосов
/ 14 ноября 2018

В реакции родного у меня есть кнопка, которая при нажатии в моде открывает. В модале у меня есть ручки View с Panresponder, которые позволяют перетаскивать прямоугольник вверх и вниз внутри модала.

Это работает нормально, но мне нужно сделать дополнительное касание, когда модал открылся, чтобы представление Panresponder могло уловить касание и начать перетаскивание. Есть ли способ передать сенсорное событие модальному или иметь представление Panresponder в модальном датчике касанием, пока палец находится на сцене?

Пример кода:

class Parent extends Component {
  state = {
    modalVisible: false
  };
  render() {
    <View>
      {/* When this is pressed...  */}
      <TouchableOpacity onPressIn={() => this.setState({ modalVisible: true })}>
        <Text>Open & start dragging</Text>
      </TouchableOpacity>
      {/* Is there a way to capture the touch event right away?  */}
      <DragModal visible={this.state.modalVisible} />
    </View>;
  }
}

class DragModal extends Component {
  translateY = new Animated.Value(0);
  panresponder = PanResponder.create({
    // Ask to be the responder:
    onStartShouldSetPanResponder: (evt, gestureState) => true,
    onPanResponderMove: Animated.event([
      null,
      {
        moveY: this.y
      }
    ])
    // ...etc
  });
  render() {
    return (
      <Modal visible={this.props.visible}>
        <View {...this.panresponder.panHandlers} style={styles.container}>
          <View
            style={{
              ...styles.dragHandle,
              transform: [{ translateY: this.translateY }]
            }}
          >
            <Text>Draghandle</Text>
          </View>
        </View>
      </Modal>
    );
  }
}
...