javascript - Imagepicker React Native 在 iOS 上崩溃但在 Android 上运行良好
问题描述
我目前在 react native 上使用 imagepicker。当我使用 android 来选择图像时,它工作正常。但是,当我使用 iOS 时,它会在我选择照片时崩溃。
这是它在 xcode 调试器中显示的错误:
2020-04-03 11:54:27.802434+0800 app[7218:1993193] -[NSURLResponse allHeaderFields]:无法识别的选择器发送到实例 0x28281aba0 2020-04-03 11:54:27.802766+0800 app[7218:1993193] * 终止app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSURLResponse allHeaderFields]: unrecognized selector sent to instance 0x28281aba0' * First throw call stack: (0x19d01c164 0x19cd30c1c 0x19cf1a7e0 0x19d02085c 0x19d022b60 0x102b27bc8 0x102b27a90 0x102b01ce0 0x1059f5d10 0x1059f718c 0x1059fe968 0x1059ff580 0x105a0b0f0 0x19cd23714 0x19cd299c8) libc+ +abi.dylib:以 NSException 类型的未捕获异常终止
这是我的代码:
chooseImage = async (id) => {
//await this.askPermissionsAsync();
let options = {
title: 'Select Image',
storageOptions: {
skipBackup: true,
path: 'images',
},
};
ImagePicker.showImagePicker(options, (response) => {
console.log('Response = ', response.error);
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) {
console.log('ImagePicker Error: ', response.error);
} else {
const source = { uri: response.uri };
// You can also display the image using data:
// const source = { uri: 'data:image/jpeg;base64,' + response.data };
// alert(JSON.stringify(response));
let file_data = [...this.state.fileData];
file_data[id] = response.data;
let file_uri = [...this.state.fileUri];
file_uri[id] = response.uri;
this.setState({filePath:response, fileData: file_data, fileUri: file_uri});
}
});
}
我还在 info.plist 中添加了权限:
<key>NSCameraUsageDescription</key>
<string></string>
<key>NSPhotoLibraryUsageDescription</key>
<string></string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string></string>
<key>NSDocumentsFolderUsageDescription</key>
<string></string>
但问题仍然存在于ios。
解决方案
问题是
'data:image/jpeg;base64,' + this.state.fileData[id]
在图像标签上渲染它时。此处指出了此问题:
我所做的解决方案是在选项上添加“noData:true”并直接访问图像标签中的 URI 文件位置。
希望这可以帮助
推荐阅读
- java - 使用 setOnKeyPressed 和 setOnKeyReleased 移动
- mysql - MYSQL 查询,只给出可以保存为视图的每个组的第一次出现
- excel - VBA数据透视表代码在单步执行时有效,但在分配给宏按钮时无效
- python - Python3.6 函数未调用
- unicode - 无法使用 cqlsh 将 UTF-8 数据复制到 ScyllaDB
- javascript - React 中的条件样式
- spring-integration - 确认春季消息
- javascript - 从特定行访问表格单元格以检索其嵌入的输入值
- python - 如果条件使用 Python
- javascript - Vue 谷歌地图信息窗口自定义按钮不起作用