反应原生iOS第一次后无法打开相机/图库

时间:2018-12-05 08:26:28

标签: ios react-native

这是我的源代码:

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})关闭“选择图像”模态之前打开“图库”,它将起作用。但是我的顾客不接受。

请帮助我。

谢谢。

1 个答案:

答案 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

}