Panresponder 滑动无法点击按钮

如何解决Panresponder 滑动无法点击按钮

我正在尝试制作一个类似火种的应用程序组件来刷卡,当我用手指刷卡时它工作正常,但是,我也想在单击按钮时实现相同的效果。到目前为止,我已经使用 Panresponder 来创建滑动动作,下面是我的代码

render() {
return (
  <SafeAreaView style={{ flex: 1 }}>
    <View style={{ flex: 1,justifyContent: 'center',alignContent: 'center',alignItems: 'center',backgroundColor: 'white' }}>
      <View style={{
        height: Dimensions.get('window').height * .75,borderRadius: 5,width: Dimensions.get('window').width * .75,}}>
        {
          this.state.ARRAY.map((item,index) => {
            this.position = new Animated.ValueXY()
            this.rotate = this.position.x.interpolate({
              inputRange: [-CONST_WIDTH / 2,CONST_WIDTH / 2],outputRange: ['-30deg','0deg','10deg'],extrapolate: 'clamp'
            })

            this.rotateAndTranslate = {
              transform: [{
                rotate: this.rotate
              },...this.position.getTranslateTransform()
              ]
            }
            this.isPandisabled = true
            this.PanResponder = PanResponder.create({

              onStartShouldSetPanResponder: (evt,gestureState) => this.isPandisabled,onPanResponderMove: (evt,gestureState) => {
                this.position.setValue({ x: gestureState.dx,y: 0 })
              },onPanResponderRelease: (evt,gestureState) => {

                if (gestureState.dx > 120) {
                  this.isPandisabled = true
                  // console.log('dxgreaterThan120',gestureState.dx)
                  Animated.spring(this.position,{
                    tovalue: { x: CONST_WIDTH + 100,y: 0 },useNativeDriver: Platform.OS === 'android'
                  }).start(() => {
                    let modified = this.state.ARRAY.filter((x,ind) => { return ind != index })
                    console.log('modified',modified)
                    this.setState({ ARRAY: modified })
                  })
                }
                else if (gestureState.dx < -120) {
                  this.isPandisabled = true
                  Animated.spring(this.position,{
                    tovalue: { x: -CONST_WIDTH - 150,modified)
                    this.setState({ ARRAY: modified })
                  })
                }
                else if (gestureState.dy < -120 || gestureState.dy > 120) {
                  this.isPandisabled = false
                }
                else {
                  this.isPandisabled = true
                  Animated.spring(this.position,{
                    tovalue: { x: 0,friction: 4,useNativeDriver: Platform.OS === 'android'
                  }).start()
                }
              }
            })
            return (
              <Animated.View
                key={index}
                {...this.PanResponder.panHandlers}
                style={[this.rotateAndTranslate,{
                  borderRadius: 5,backgroundColor: color[index],position: 'absolute',top: 0,bottom: 0,left: 0,right: 0,}]}>
                <Animated.ScrollView
                  onScrollEndDrag={() => {
                    this.isPandisabled = true
                  }}>
                  <View style={{ flex: 1,flexGrow: 1 }}>
                    {
                      ARRAY_SUUMB.map((item,index) => {
                        return (
                          <Text style={{
                            padding: 16,color: 'white'
                          }}>
                            Swiper
                          </Text>
                        )
                      })
                    }
                  </View>
                </Animated.ScrollView>

              </Animated.View>
            )
          })
        }
      </View>
      <View style={{ justifyContent: 'center',flexDirection: 'row',alignItems: 'center' }}>
        <TouchableOpacity
          onPress={() => this.swipeLeft()}
          style={{
            justifyContent: 'center',height: 60,width: 60,borderRadius: 60 >> 1,backgroundColor: 'gray',alignItems: 'center'
          }}>
          <Text>Left</Text>
        </TouchableOpacity>
        <TouchableOpacity
          onPress={() => this.swipeRight()}
          style={{
            justifyContent: 'center',alignItems: 'center'
          }}>
          <Text>Right</Text>
        </TouchableOpacity>
      </View>
    </View>

  </SafeAreaView>
)

}

我想做一个功能this.swipeRight(),我可以像用手指刷卡一样刷卡,我尝试创建一个类似的功能,但它只是立即删除了顶部卡片,然后它停止工作

  swipeRight = () => {
this.position.setValue({ x: Dimensions.get('screen').width * 1.5,() => {
  this.isPandisabled = true
  Animated.spring(this.position,{
    tovalue: { x: CONST_WIDTH + 100,useNativeDriver: Platform.OS === 'android'
  }).start()
  let modified = this.state.ARRAY.splice(0,-1)
  console.log('modified',modified)
  this.setState({ ARRAY: modified })
})

}

任何帮助将不胜感激,我在地图功能中有 panresponder

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?