6

I've created a button that I want to have call a function on click and then again on release. A normal TouchableOpacity or other will trigger a function upon release of a click only, I need functions on both click AND release.

<View
    style={styles.touchbutton}
    onStartShouldSetResponder={() => this.clickOn()}
    onResponderRelease={() => this.clickRelease()}>
    <Text style={styles.dark}>Button</Text>
</View>

The above code works on click but not on release. I also tried onResponderReject but that doesn't work either. Hard to find what the command should be.

Stack Overflow
  • 1
  • 5
  • 23
  • 51
Hasen
  • 11,710
  • 23
  • 77
  • 135

2 Answers2

9

Had the same problem. onStartShouldSetResponder needs to return true.

onStartShouldSetResponder={(e) => {
    /*do whatever*/;
    return true
}}
gprathour
  • 14,813
  • 5
  • 66
  • 90
pwcremin
  • 755
  • 6
  • 7
2

Please Try This code For your click event it works for me :

clickOn(){
Alert.alert(
  'Test Demo',
  'Please Enter Valid Data',
  [
    //{text: 'Ask me later', onPress: () => console.log('Ask me later pressed')},
    {text: 'Cancel', onPress: () => console.log('Cancel Pressed'), style: 'cancel'},
    {text: 'OK', onPress: () => console.log('OK Pressed')},
  ],
  { cancelable: false }
)
  }
}
Put these two lines it works for me when you release
  onStartShouldSetResponder={() => true}
  onResponderRelease={() => this.onRowTap()}
Hardik1344
  • 2,917
  • 2
  • 15
  • 31