如何区分本机上的双击和单击?

时间:2019-11-14 07:14:43

标签: react-native

我需要在视图上单击和双击时执行不同的操作。双击我需要像Instagram双击体验一样喜欢图像。轻按一下,我需要打开一个模态。 对于双击,我使用了完美的TapGestureHandler

 <TapGestureHandler
          ref={this.doubleTapRef}
          maxDelayMs={200}
          onHandlerStateChange={this.onProductImageDoubleTap}
          numberOfTaps={2}
        >
         <SomeChildComponent ...

但是当我在

 <TouchableWithoutFeedback onPress={this.imageTapped}>
双击this.imageTapped函数的

this.onProductImageDoubleTap一起被调用两次。完成两次轻击后,有没有办法取消可触摸的轻击?

3 个答案:

答案 0 :(得分:2)

最好的解决方案是不使用状态,因为设置状态是异步的。在Android上像我的魅力一样工作!

gcloud ml-engine predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_FILE

答案 1 :(得分:0)

由于您要处理一键和双击操作,因此我认为这是一个简单的代码,应该可以解决您的问题

  

未经测试

首先在状态下定义clickCount:0

state={clickCount:0, //another state}

然后使用setTimeout创建一个函数来处理用户轻击一次或两次:

handlingTap(){
  this.state.clickCount==1 ?
  //user tap twice so run this.onProductImageDoubleTap()
  this.onProductImageDoubleTap :
  //user tap once so run this.imageTapped with setTimeout and setState
  //i set 1 sec for double tap, so if user tap twice more than 1 sec, it's count as one tap
  this.setState({clickCount:1}, ()=>{
    setTimeout(()=>{
      this.setState({clickCount:0})
      this.imageTapped()
    }, 1000)
  })
}

<TouchableWithoutFeedback onPress={this.handlingTap()}/>

仅使用TouchableWithoutFeedback而不是TapGestureHandler

答案 2 :(得分:0)

react-native-double-tap包似乎正是您想要的。