android - 尝试在android中捕获签名时获取`this.refs.signatureCanvas.takeSnapshotAsync is not a function`
问题描述
我正在使用react-native-signature-pad
在我的 react-native 应用程序中捕获签名(仅在 Android 中,因为 ExpoPixi 不适用于 Android):
{
Platform.OS === 'ios' ? (
<ExpoPixi.Signature
ref="signatureCanvas"
style={componentStyles.expoSignature}
strokeWidth={3}
strokeAlpha={0.5}
/>
) : (
<SignaturePad ref="signatureCanvas" style={componentStyles.expoSignature} />
);
}
这会根据用户操作调用各种函数。一个是capture
调用_onSave()
,它看起来像这样:
async function _onSave() {
const signatureImage = await this.refs.signatureCanvas.takeSnapshotAsync({
format: 'png',
quality: 0.1,
result: 'file',
});
await this.refs.signatureCanvas.clear();
const convertedSignature = await ImageManipulator.manipulateAsync(
signatureImage.uri,
[{ rotate: -90 }],
{
compress: 0,
format: ImageManipulator.SaveFormat.PNG,
base64: true,
}
);
await FileSystem.deleteAsync(signatureImage.uri, { idempotent: true });
await FileSystem.deleteAsync(convertedSignature.uri, { idempotent: true });
if (this.props.onSave) this.props.onSave(convertedSignature.base64);
this.setState({
visible: false,
});
}
结果,我得到的是:
[未处理的承诺拒绝:TypeError:this.refs.signatureCanvas.takeSnapshotAsync 不是函数。(在 'this.refs.signatureCanvas.takeSnapshotAsync({]
我正在使用async/await
此功能,所以我不确定问题是什么。
注意:这不是使用 iPhone 的问题,只是使用 android,这让我更加困惑,因为两种实现最终都调用了相同的函数。
任何见解将不胜感激。
解决方案
推荐阅读
- python - 用虚拟值初始化一组数据帧
- e-commerce - Hybris - 如何将 SmartEdit 扩展添加到现有项目
- php - 扩展抽象类的静态变量的问题
- python - 如果第一个字符与列表中的另一个字符串元素匹配,则删除字符串列表中的字符串元素
- python - 如何在python中使用fileinput保存文件?给出 AttributeError:'FileInput' 对象没有属性 'read'
- intellij-idea - 如何在 Intellij 中增加规模(一般)
- c++11 - 如何使用 uint8_t* 创建 boost::asio::buffer [有可能吗?]
- python - 如何用python存储25M 3-D int tuple?
- swift - Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed:字符 0 周围的值无效
- jquery - 如何在 jQuery 中处理按钮单击事件