我试图在复选框上创建一个长按处理程序。包含组件的包是https://www.npmjs.com/package/react-native-checkbox - 我认为它是默认包。问题是复选框拦截了onPressIn
和onPressOut
个事件,而我的TouchableWithoutFeedback
组件没有发出任何内容。这是代码:
var pressStart = 0;
const pressTimeout = 400;
function pressIn() {
alert(0);
pressStart = parseInt((new Date()).getTime() / 1000);
}
function pressOut() {
var pressEnd = parseInt((new Date()).getTime() / 1000);
if (pressEnd - pressStart < pressTimeout) return;
alert(1);
}
return (
<View style={style.container}>
<TouchableWithoutFeedback onPressIn={pressIn} onPressOut={pressOut}>
<View>
{/*<Text>asdasdasd</Text>*/}
<CheckBox checked={this.state.done} labelStyle={style.checkbox} label={this.state.name} onChange={toggleChecked} />
</View>
</TouchableWithoutFeedback>
</View>
);
此外,如果我使用Text
组件而不是CheckBox
- 它会触发pressIn
事件,但pressOut
无效(我看alert(0)
},但不是alert(1)
)。
答案 0 :(得分:0)
好的,首先,我已经从支持react-native-checkbox
和onPressIn
事件的onPressOut
包中创建了一个分支:
https://www.npmjs.com/package/react-native-checkbox-touch-events
但是我觉得它没用,因为你可以这样做(我不承诺它有效):
<TouchableWithoutFeedback delayPressIn={0} onPressIn={pressIn} onPressOut={pressOut}>
<View>
<CheckBox onPress={press} />
</View>
</TouchableWithoutFeedback>
无论如何,我会使用我的包裹,我太懒了,无法测试这个解决方案,也不想对我的工作感到失望。
并且:如果你想要毫秒,不要将getTime()
除以1000 ......