在我的应用程序中,我编写了一个代码来使用UIImagePickerController录制视频。在所有其他设备上都可以正常运行,只有我的一个客户端遇到运行iOS 14.2的iPhone 8的问题,即在录制视频时显示黑屏,并且右下方按钮上的后置或后置摄像头都无法滑动。
这是我的代码和图片:
UIImagePickerController *evidencePicker = [[UIImagePickerController alloc] init];
evidencePicker.delegate = self;
evidencePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
evidencePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
evidencePicker.videoMaximumDuration = 10.0;
evidencePicker.allowsEditing = YES;
evidencePicker.videoQuality = UIImagePickerControllerQualityTypeLow;
[self.navigationController presentViewController:evidencePicker animated:YES completion:nil];
还具有摄像头权限。
那么,呈现UIImagePickerController时我做错了什么吗?还是需要检查其他内容?
答案 0 :(得分:0)
在呈现UIImagePickerController之前,请检查相机的可用性。像这样:
import React from 'react'
import {StyleSheet, View,Text, Switch, Button, Alert, ScrollView, FlatList, SafeAreaView} from 'react-native'
export default () => {
// use data set in default state
const [data, setData] = React.useState([
{
index: 1,
title: 'Toggle Night Mode',
},
{
index: 2,
title: 'Remind me to take a break',
},
{
index: 3,
title: "Remind me when it's bedtime",
},
]);
function toggleSwitch(value, index){
const newData = [...data];
const newData[index].isEnable = value;
setData(newData);
}
function Item({item, index}) {
return (
<View>
<Text style={styles.text}> {item.title} </Text> // use `title` here like this
<Switch
.....
value={item.isEnable || false} // change here
onValueChange={(value) => toggleSwitch(value, index) } // change here
/>
</View>
)
}
return (
<>
<View style = {styles.container}>
<FlatList
data = {data}
keyExtractor = {item => item.id}
renderItem = {({ item, index }) => <Item item={item} index={index} /> } // send `item` as prop
/>
</View>
</>
);
}
答案 1 :(得分:0)
我也遇到过这个问题,我的设备是14.3。 我同事是 14.6 ,同样的代码 14.6 是正常的。我测试是UIImagePickerControllerSourceTypeCamera这个枚举值的问题,如果改成默认就可以正常录制视频了