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