2016-11-29 1 views
3

Я работаю над приложением, использующим iOS 10, и использую камеру для съемки. Когда открывается окно камеры, вместо кнопки отмены появляется надпись «API_CANCEL_TITLE». И когда я снимаю pic, весь заголовок видит, я хочу, чтобы вместо этого длинного заголовка он выглядел «Отмена». Я использовал локализацию приложения. Я искал несколько ссылок, но не смог найти решение.iOS 10 Вид камеры, показывающий API_Cancel_Title вместо Отмена

Вот снимок экрана:

enter image description here

Это происходит только в ИО 10, в прошивке 9 он будет работать правильно здесь код:

- (IBAction)takePicturePressed:(UIButton *)sender 
{ 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    [self presentViewController:picker animated:YES completion:nil]; 
} 

Пожалуйста предложить ...

+0

Добавьте код, который вы использовали, чтобы показать камеру. – lukya

+0

Вы реализовали 'imagePickerControllerDidCancel' этот метод? и каков регион разработки локализации локализации? – KAR

+0

Да, я применил для него все необходимые методы делегирования –

ответ

2

У меня есть подход, я знаю, что это будет не идеальным решением, однако пока получить идеальный один, мы можем использовать это:

Используйте вид для камеры. Управляйте им с условием, если версия устройства составляет 10 или больше 10, а затем выполните настройки пользовательских настроек камеры, остальные используют вид камеры по умолчанию.

С помощью пользовательского вида кнопка API_Cancel_Title скрывает и сохраняет функциональность. Вот ссылка, которую я использовал для справки: Removing the cancel button from Custom camera

1

Убедитесь, что вы не используете локализацию в своем приложение, если вы его используете, затем правильно настройте все свои строковые файлы.

Поиск в файле строки для API_CANCEL_TITLE, а затем установить его на Cancel.

Поскольку кнопка CancelUIImagePickerController изменится в соответствии с локализацией.

+0

Я обновляю вопрос, так как это происходит только в iOS 10, в 9 работает правильно ... –

+0

Вы искали 'API_CANCEL_TITLE' в своем проекте? – Rajat

+0

Нет, я не использовал этот тип строки .... –

11

Я подошел с той же проблемой, используя BundleLocalization и я проследил UIImagePickerController ключи, которые он получает из пучка.

Оказывается, он использует 4 "таблицы" (в NSBundle номенклатуре):

  • CameraUI (для камеры)
  • PhotoLibraryServices (для PhotoLibrary)
  • PhotoLibrary (для PhotoLibrary)
  • PhotosUI (для PhotoLibrary)

В моем случае все, что у меня было t o сделать, чтобы локализовать интерфейс UIImagePickerController, он создал в проекте пару файлов .strings и локализовал их.

Ниже содержание указанных файлов с ключами, которые я видел (со стандартными английскими значениями), они довольно самоуправления объяснения

CameraUI.strings
"PHOTO" = "PHOTO"; 
"AEAF_LOCK_TEXT" = "AE/AF LOCK"; 
"API_CANCEL_TITLE" = "Cancel"; 
"HDR_AUTO" = "Auto"; 
"HDR_ON" = "On"; 
"HDR_OFF" = "Off"; 
"TIMER_OFF_TEXT" = "Off"; 
PhotoLibraryServices.струнные
"PHOTOS" = "Photos"; 
"CAMERA_ROLL" = "Camera roll"; 
"ALL_SCREENSHOTS" = "Screenshots"; 
PhotoLibrary.strings
"STREAM_SHARED_BY_ME_SUBTITLE" = "From You"; 
"STREAM_SHARED_BY_SUBTITLE" = "From %@"; 
"ALBUM_IMAGE_COUNT_FORMAT" = "%@ Photos"; 
"ALBUM_VIDEO_COUNT_FORMAT" = "%@ Videos"; 
"1_ALBUM_PHOTO" = "1 Photo"; 
"1_ALBUM_VIDEO" = "1 Video"; 
"ALBUM_TWO_TYPES_LABEL_COMMAS" = "%@, %@"; 
PhotosUI.strings
"ALL_PHOTOS_IN_LIBRARY" = "Moments"; 
"PXUserCollectionsSectionTitle" = "My Albums"; 
"FULL_PHOTOS_GRID_ZOOM_LEVEL_TITLE" = "Moments"; 
"NO_PHOTOS_OR_VIDEOS" = "No Photos or Videos"; 
"EMPTY_ALBUM_LIST_MESSAGE_iPhone" = "You can take photos and videos using camera, or sync photos and videos onto your iPhone using iTunes"; 
+0

У меня была такая же проблема с тобой, когда я вызываю UIImagePickerController из UIWebView. Я попытался создать файл CameraUI.strings, но ничего не изменилось. Можете ли вы показать мне более подробную информацию о вашем ответе? И я заметил, что если я использую сафари для вызова 'UIImagePickerController', эта проблема не возникает. Это так странно. –

+1

Для меня это работает, потому что я использую [BundleLocalization] (https://github.com/cmaftuleac/BundleLocalization). Он _swizzles_ '[NSBundle localizedStringForKey: value: table:]', поэтому каждый доступ к любому маршруту пакета через ваш выбор (по умолчанию '[NSBundle mainBundle]') и Camera и другие вещи будут использовать ваш локализованный файл 'CameraUI.strings' , – shc

+1

Использовать [BundleLocalization] достаточно, чтобы скомпилировать его с вашим проектом. Чтобы изменить язык локализации, используйте '[BundleLocalization.sharedInstance setLanguage: lang]' где 'lang' - это идентификатор языка строки, например. для polish lang = "pl-PL", english "en", "en-US", для 'base' localization lang = nil – shc