1

I am trying to open camera app using react native's new architecture with UIImagePickerController for iOS

I have written the code in swift and i am calling it via objective-c

Here is my objective-c++ code

#import <Foundation/Foundation.h>
#import "RTNMyCamera.h"
#import "myapp-Swift.h"

@implementation RTNMyCamera
RCT_EXPORT_MODULE()

MyCamera *myCamera = [[MyCamera alloc] init];

- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
    (const facebook::react::ObjCTurboModule::InitParams &)params
{
    return std::make_shared<facebook::react::NativeMyCameraSpecJSI>(params);
}

- (void)takePhoto {
  [myCamera takePhotoFromCamera];
}

@end

Next in my swift file

import Foundation
import Photos
import React
 
@objcMembers class MyCamera: NSObject,UINavigationControllerDelegate,UIImagePickerControllerDelegate {
  
  let presentedViewController = RCTPresentedViewController()
  let viewController = UIApplication.shared.windows.first?.rootViewController

  func takePhotoFromCamera() {
    DispatchQueue.main.async {
      debugPrint("1")
      let vc = UIImagePickerController()
      vc.sourceType = .camera
      vc.allowsEditing = true
      debugPrint("2")
      vc.delegate = self
      self.viewController?.present(vc, animated: true)
      debugPrint("3")
    }
//    present(vc, animated: true)
  }
  
  func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    debugPrint("4")
    picker.dismiss(animated: true)
    debugPrint("5")
    guard let image = info[.editedImage] as? UIImage else {
 .........

I tried using self.presentedViewController?.present(vc, animated: true) and self.viewController?.present(vc, animated: true), nothing seems to work and i don't get error message in logs as well

Full source code here

BraveEvidence
  • 53
  • 11
  • 45
  • 119

0 Answers0