如何在React Native中取消onPress

时间:2019-11-26 14:34:34

标签: react-native

我的组件中有一个TouchableHighlight区域。

我想触发_onPress方法进行快速点击,而_onLongPress进行较长的点击。 可以,但是_onPress方法总是在我释放水龙头时触发。

如何根据短按或长按来仅触发这些方法之一?

class MyClass extends React.Component {
    _onPress = () => {
        console.log("Press")
    }

    _onLongPress = () => {
        console.log("LongPress")
    }

    render() {
        return (
            <TouchableHighlight
                style={styles.touchable}
                underlayColor="white"
                delayPressIn={2000}
                onPress={this._onPress}
                onPressIn={this._onLongPress}
            >
                <View style={styles.box}>
                    <Image style={styles.logo} source={this.state.logo.id} />
                </View>
            </TouchableHighlight>
        )
    }
}

非常感谢:)

2 个答案:

答案 0 :(得分:1)

根据doc,您可以将onPressonLongPress道具直接传递到TouchableHighlight组件,因为它继承了{{1} }。

TouchableWithoutFeedback

将仅触发两个事件之一。 Here,您可以尝试举例说明我在说什么。

答案 1 :(得分:0)

TouchableHighlight继承了TouchableWithoutFeedback的所有道具,而不是使用您试图在代码中使用的fin addon install mailhog ,而可以使用长按和短按。
因此,无论您尝试什么,都将无法正常工作。案例。

  

您可以同时使用两个TouchableHighlight TouchableWithoutFeedBack,两个都有相同的道具。
  长按onLongPress和短按onPress都可以满足您的要求。

public class Target {

    private int property1;
    private int property1Contoller ;

    public Target() {
    }

    public int getProperty1() {
        return property1;
    }

    public void setProperty1(int property1) {
        this.property1 = property1;
        this.setProperty1Contoller(property1);
    }

    private int getProperty1Contoller() {
        return property1Contoller;
    }

    private void setProperty1Contoller(int property1Contoller) {
        this.property1Contoller = property1Contoller;
    }

    public boolean checkProperty1() {
        return (this.getProperty1() == this.getProperty1Contoller());
    }
}

onPressIn

希望这会有所帮助.....谢谢:)