Как правильно использовать React Native onLongPress?
У меня есть простой кусок кода, который является просто TouchableOpacity с подпоркой onLongPress, но, похоже, он не работает.
<TouchableOpacity delayLongPress={10} onLongPress={()=>{console.log("pressed")}} activeOpacity={0.6}>
<Text>BUTTON</Text>
</TouchableOpacity>
Я попытался удалить опору задержки, но это все еще не работает. Однако изменение onLongPress на onPress, похоже, работает, но я хочу, чтобы функция продолжительного нажатия была. Я тестирую это на симуляторе Android.
2 ответа
В соответствии с этой проблемой это происходит случайным образом после тестирования на реальном устройстве с включенным React Native Debugger. Отключение React Native Debugger устранит вашу проблему.
Если вы хотите показать вид при длительном нажатии и скрыть его при выпуске:
<TouchableOpacity
onPress={this._onPress}
onLongPress={this._onLongPress}
onPressOut={this._onPressOut}
>
....
</TouchableOpacity>
_onLongPress = () => {
this.setState({
modalVisible: true
})
}
_onPressOut = () => {
this.setState({
modalVisible: false
})
}
Я использовал этот следующий код с "реагировать": "16.6.3" и "реагировать-нативный": "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>
Теперь дело в том, что все работает нормально, поэтому я думаю, что в предыдущей версии была ошибка, и теперь она работает нормально.