Сделать снимок кнопкой громкости

Я разрабатываю приложение с некоторыми функциями камеры, и я хотел бы использовать кнопки громкости, чтобы сделать снимок (как это делает приложение Apple Camera).

Используя MPVolumeView и этот фрагмент:

let rect = CGRect(x: -500, y: -500, width: 0, height: 0)
let volumeView = MPVolumeView(frame: rect)
UIApplication.sharedApplication().windows.first?.addSubview(volumeView)

и зарегистрировавшись на AVSystemController_SystemVolumeDidChangeNotification уведомления, я могу перехватывать нажатие кнопки и не показывать громкость HUD.

Этот трюк работает, если не включена настройка «Изменить с помощью кнопок» в меню «Настройки» > «Звуки». В этом случае я все равно получу уведомление, но появится HUD.

Есть идеи, как скрыть HUD, даже если этот параметр включен?


person Luca Torella    schedule 09.10.2015    source источник


Ответы (1)


Я точно знаю, что JPSVolumeButtonHandler, доступный на GitHub, может

Скройте HUD, который обычно отображается при нажатии кнопки громкости.

Я обнаружил, что обходное решение здесь, но оно похоже на ваше решение:

- (void)disableVolumeHUD 
{
    self.volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(MAXFLOAT, MAXFLOAT, 0, 0)];
    [[[[UIApplication sharedApplication] windows] firstObject] addSubview:self.volumeView];
}

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

параметр «Изменить с помощью кнопок» в «Настройки»> «Звуки» включен

person Massimo Polimeni    schedule 09.10.2015
comment
Работает ли это даже при включенной настройке «Изменить кнопками»? репозиторий посмотрю позже - person Luca Torella; 09.10.2015
comment
извините, я не знаю больше, и теперь я не могу попробовать - person Massimo Polimeni; 10.10.2015
comment
Очевидно, если я использую этот класс, он работает. Интересно, чего не хватает в моем коде. - person Luca Torella; 12.10.2015
comment
Три строки, которые вы разместили, кажутся в порядке, поэтому вам нужно проверить другие строки в вашем коде; может быть, это просто небольшая ошибка. - person Massimo Polimeni; 12.10.2015