这是我的源代码:
export default class App extends Component<Props> {
constructor(props) {
super(props);
this.state = {
isVisible: false,
};
}
openModal = () => {
this.setState({isVisible: true});
}
openPicker = () => {
this.setState({isVisible: false});
ImagePicker.openPicker({
mediaType: "video",
}).then((video) => {
console.log(video);
});
}
render() {
return (
<View style={styles.container}>
<TouchableOpacity onPress={this.openModal}>
<Text>Choose Image</Text>
</TouchableOpacity>
{
this.state.isVisible &&
<Modal style={styles.modal}>
<View style={styles.conModal}>
<TouchableOpacity style={styles.touch} onPress={this.openPicker}>
<Text style={styles.text}>Open Gallery</Text>
</TouchableOpacity>
</View>
</Modal>
}
</View>
);
}
}
当用户点击“选择图像”按钮时,应用程序将显示“选择图像”模式,允许用户选择“打开图片库”按钮或其他按钮,例如“打开相机”,...
用户选择“打开图片库”按钮后,应用程序将在打开图片库之前通过this.setState({isVisible: false})
关闭“选择图片”模式。
它在Android上运行良好。但它只能在iOS上运行一次。下次,应用程序还会显示Gallery,但会立即关闭。
如果我将逻辑更改为:在通过this.setState({isVisible: false})
关闭“选择图像”模态之前打开“图库”,它将起作用。但是我的顾客不接受。
请帮助我。
谢谢。
答案 0 :(得分:0)
一些延迟后打开画廊。我认为这可能有效
openPicker = () => {
this.setState({isVisible: false});
// open gallery after some delay.
setTimeout(()=>{
ImagePicker.openPicker({
mediaType: "video",
}).then((video) => {
console.log(video);
});
},700) // you can change delay time as per your requirement
}