Автофокус не работает в первом сеансе AVCaptureSession, когда я создаю второй сеанс AVCaptureSession. Второй создаваемый сеанс - это тот, в котором работает автофокус, а первый созданный сеанс не выполняет автофокусировку.
Я ожидал, что любой сеанс сможет автоматически фокусироваться при запуске после остановки другого, так же как автоматический баланс белого и автоматическая экспозиция работают для обоих сеансов. Если вы посмотрите на окно журнала с примером кода ниже, вы увидите сообщения о наблюдении за ключом; но никогда сообщение об изменении фокуса, когда запущен верхний сеанс.
Дополнительное примечание: К сожалению, у меня есть ошибка в сторонней библиотеке, которую я использую, которая не позволяет мне просто полностью воссоздать сеансы при переключении между ними (утечка его AVCaptureSessions, которые в конечном итоге приводят к уничтожению приложения). Полная история состоит в том, что эта библиотека создает для меня один из сеансов захвата, у нее есть общедоступный API для запуска и остановки сеанса, и я хочу создать еще один сеанс. Приведенный ниже код демонстрирует проблему без использования сторонней библиотеки.
Я создал тестовое приложение с кодом, перечисленным ниже, и файлом XIB, который имеет два представления, одно над другим, и кнопку, подключенную к методу switchSessions, который демонстрирует проблему.
Это может быть связано с проблема, описанная здесь, Я немного поиграл в конфиг. Так что, возможно, я неосознанно изменил какую-то конфигурацию. вот конфиг окружения / development.rb config.cache_classes = false ...
Раньше он работал нормально. Я немного поиграл в конфиг. Так что, возможно, я неосознанно изменил какую-то конфигурацию.
вот конфигурация environment / development.rb
config.cache_classes = false
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching
config.consider_all_requests_local = true
config.action_view.debug_rjs = true
config.action_controller.perform_caching = false
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
# Print deprecation notices to the Rails logger
config.active_support.deprecation = :log
# Only use best-standards-support built into browsers
config.action_dispatch.best_standards_support = :builtin
# migration prefix with sequence #s
config.active_record.timestamped_migrations = false
#time zone
config.time_zone = 'UTC'
Вот конфигурационная секция application.rb
# Configure the default encoding used in templates for Ruby 1.9.
config.encoding = "utf-8"
# Configure sensitive parameters which will be filtered from the log file.
config.filter_parameters += [:password]
config.active_record.schema_format = :sql
, когда я запускаю reload! на консоли rails он возвращает true