直到我在React Native中多次按下按钮才会响应按钮

时间:2016-08-08 19:16:49

标签: android debugging react-native react-native-android

我在React Native Android项目中遇到了一个奇怪的错误。

有一个媒体控制器页面,其中实现了自定义音频播放器(播放/暂停下一步上一页按钮等),它在 Android模拟器上运行得很好,但是当我尝试点击真实设备上的任何按钮时,它只是在我按下它之后才会响应次。

我能想到的几个原因:

  • 整个页面响应平移手势,因此在模拟器上,点击事件被识别为点击,但在设备上,它将其识别为平移手势。

  • 我得到了Warning: You are manually calling a React.PropTypes validation function...(其解决方案可能是this answer)的1,000个警告,它可以与应用程序的性能一起发挥作用。 (此问题已修复,但仍然会发生)

  • 应用中有几个库仅针对iOS 实施,例如react-native-streamingkitreact-native-mpremotecommandcenter,其中一个可能导致问题。

我能绕过它吗?可能有任何其他原因导致问题吗?

1 个答案:

答案 0 :(得分:0)

我修复了错误 - 原因是我列出的那个中的#1。

我的一个onMoveShouldSetPanResponderCapture()中的PanResponder函数包含此代码:

onMoveShouldSetPanResponderCapture: (evt, gestureState) => {
    return dx != 0 && dy != 0 && this._canPan;
}

换句话说,代码设置了将点按手势和平移手势区分为的阈值!

我按照以下方式进行了更改,现在工作得非常好:

onMoveShouldSetPanResponderCapture: (evt, gestureState) => {
    return (Math.abs(gestureState.dx) > 5 || Math.abs(gestureState.dy) > 5) && this._canPan;
}

如果您愿意,请将阈值设置为10px。