首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TouchableOpacity覆盖PanResponder

TouchableOpacity覆盖PanResponder
EN

Stack Overflow用户
提问于 2018-02-14 00:42:46
回答 1查看 842关注 0票数 1

我有一个连接到TouchableOpacity的PanResponder (它已经包含了一个onPress函数)。

这是我的PanResponder:

代码语言:javascript
复制
this.panResponder = PanResponder.create({
  onMoveShouldSetPanResponder : () => true,
  onPanResponderGrant : (e, gesture) => {
      this.setState({zIndex: 20});
      Animated.spring(this.state.size, {
          toValue: 200,
          friction: 5
      }).start();
  },
  onPanResponderMove           : Animated.event([null,{
      dx : this.state.pan.x,
      dy : this.state.pan.y
  }]),
  onPanResponderRelease        : (e, gesture) => {
      console.log("pan responder release");
  },
  onPanResponderTerminate : (e, gesture) => {
      if(this.state.pan.y._value > 150) {
          Animated.timing(this.state.pan, {
              toValue: { x: 100, y: 200 }
          }).start();
          Animated.timing(this.state.size_1, {
              toValue: 0
          }).start( () => {
              Animated.timing(this.state.size, {
                  toValue: 0,
                  friction: 5
              }).start();
          });
      } else {
          Animated.timing(this.state.size, {
              toValue: 0,
              friction: 5
          }).start();
          Animated.spring(this.state.pan, {
              toValue: { x: 0, y: 0 },
              friction: 5
          }).start(() => {
              this.setState({zIndex: 2})
          });
      }
  },
});

这是我的TouchableOpacity:

代码语言:javascript
复制
<TouchableOpacity {...this.panResponder.panHandlers} onPress={() => this.refs.modal.open()} style={{position:'absolute', left:10}}>
    <Image
        style={{width: 200, height: 200, borderRadius: 100}}
        source={{uri: 'image url here'}} />
</TouchableOpacity>

当我点击TouchableOpacity时,它可以正常工作,但我不能根据它的PanResponder拖动它,但当我将它连接到Animated.View上时,它确实工作了。我有办法解决这个问题吗?我在任何地方都找不到一个有效的解决方案。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-14 01:18:11

尝试将panResponder附加到的TouchableOpacity包装在Animated.View

代码语言:javascript
复制
  <Animated.View {...this.panResponder.panHandlers} style={/*style*/}>
    <TouchableOpacity onPress={() => this.refs.modal.open()}>
      <Image
        style={{width: 200, height: 200, borderRadius: 100}}
        source={{uri: 'image url here'}} 
      />
    </TouchableOpacity>
  </Animated.View>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48771618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档