Я пытаюсь открыть камеру для приложения большой компании (поэтому приложение поддерживает несколько языков).Все работает нормально, но кнопки на экране камеры (Фото, Видео, Возврат, Отмена) не локализуются, даже если приложение полностью локализовано.Однако после того, как я перехожу к настройкам iPhone и реальный доступ к камере, кнопки камеры отображаются на правильном языке.Та же проблема происходит с библиотекой фотографий.Кнопка «Отмена» на панели навигации не локализована.Я перепробовал почти все, что видел в Интернете, но не смог найти решение для работы с муравьями.
import Foundation
import Photos
class CameraPhotoAuthenticationManager {
static let shared = CameraPhotoAuthenticationManager()
func checkCameraAuthorization(viewController: UIViewController, picker: UIImagePickerController) {
let status = AVCaptureDevice.authorizationStatus(for: AVMediaType.video)
switch status {
case .authorized:
viewController.present(picker, animated: true, completion: nil)
case .notDetermined:
requestPermissionForCamera()
case .denied, .restricted:
self.showCameraNeedAccessMessage(viewController: viewController)
}
}
func checkPhotoAuthorization(viewController: UIViewController, picker: UIImagePickerController) {
if PHPhotoLibrary.authorizationStatus() == .authorized {
viewController.present(picker, animated: true, completion: nil)
} else {
PHPhotoLibrary.requestAuthorization {
status in
DispatchQueue.main.async {
if status == PHAuthorizationStatus.authorized {
viewController.present(picker, animated: true, completion: nil)
} else {
self.showNeedPhotoAccessMessage(viewController: viewController)
}
}
}
}
}
private func showNeedPhotoAccessMessage(viewController: UIViewController) {
let alertVC = UIAlertController(title: nil, message: "create.group.photo.auth".localized, preferredStyle: .alert)
alertVC.addAction(UIAlertAction(title: "create.group.alert.close".localized, style: .cancel, handler: nil))
alertVC.addAction(UIAlertAction(title: "create.group.settings".localized, style: .default, handler: { (action: UIAlertAction) -> Void in
UIApplication.shared.openURL(URL(string: UIApplication.openSettingsURLString)!)
}))
viewController.present(alertVC, animated: true, completion: nil)
}
private func showCameraNeedAccessMessage(viewController: UIViewController) {
let alertVC = UIAlertController(title: nil, message: "create.group.camera.auth".localized, preferredStyle: .alert)
alertVC.addAction(UIAlertAction(title: "create.group.alert.close".localized, style: .cancel, handler: nil))
alertVC.addAction(UIAlertAction(title: "create.group.settings".localized, style: .default, handler: {
action in
UIApplication.shared.openURL(URL(string: UIApplication.openSettingsURLString)!)
}))
viewController.present(alertVC, animated: true, completion: nil)
}
private func requestPermissionForCamera(){
AVCaptureDevice.requestAccess(for: .video, completionHandler: {accessGranted in
guard accessGranted == true else { return }
})
}
}
Вы можете увидеть мой код.У кого-нибудь есть такая же проблема?Любая помощь будет отличной.Спасибо!
РЕДАКТИРОВАТЬ: Я все еще не мог найти твердое решение, но если вы не запустите приложение в режиме отладки, оно будет работать правильно.