Как правильно использовать 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>

Теперь дело в том, что все работает нормально, поэтому я думаю, что в предыдущей версии была ошибка, и теперь она работает нормально.

Вы можете проверить на симуляторе IOS или в пакете выпуска.