如何正确使用React Native onLongPress?

时间:2018-11-28 18:15:31

标签: react-native react-native-android touchableopacity touchablehighlight touchablewithoutfeedback

我有一段简单的代码,只是带有onLongPress道具的TouchableOpacity,但似乎没有用。

<TouchableOpacity delayLongPress={10} onLongPress={()=>{console.log("pressed")}} activeOpacity={0.6}>
  <Text>BUTTON</Text>
</TouchableOpacity>

我尝试删除了延迟道具,但是仍然无法正常工作。但是,将onLongPress更改为onPress似乎确实可行,但是我需要长按功能。我正在Android模拟器上对此进行测试。

4 个答案:

答案 0 :(得分:2)

根据this issue,这是在启用了React Native Debugger的真实设备上进行测试后随机发生的。禁用React Native Debugger将使您的问题消失。

答案 1 :(得分:0)

我将以下代码与“ react”:“ 16.6.3”和“ react-native”:“ 0.58.5”一起使用

<TouchableOpacity
    onLongPress={this.handlerLongClick}
    onPress={this.handlerClick}
    activeOpacity={0.6}
    style={styles.button}>
        <Text style={styles.TextStyle}> LONG PRESS THE BUTTON </Text>
</TouchableOpacity>

现在的关键是,一切正常,因此我认为以前的版本中存在一个错误,现在可以正常工作了。

答案 2 :(得分:0)

如果要长按显示视图,并在释放时将其隐藏:

<TouchableOpacity
    onPress={this._onPress}
    onLongPress={this._onLongPress}
    onPressOut={this._onPressOut}
>
            ....
</TouchableOpacity>



_onLongPress = () => {
    this.setState({
        modalVisible: true
    })
}
_onPressOut = () => {
    this.setState({
        modalVisible: false
    })
}

答案 3 :(得分:-2)

您可以在IOS模拟器或发行包中进行测试。