问题描述
在我的应用程序中,我编写了一个代码来使用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时我做错了什么吗?还是需要检查其他内容?
解决方法
在呈现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>
</>
);
}
,
我也遇到过这个问题,我的设备是14.3。 我同事是 14.6 ,同样的代码 14.6 是正常的。我测试是UIImagePickerControllerSourceTypeCamera这个枚举值的问题,如果改成默认就可以正常录制视频了