Обнаружить долгое и короткое нажатие кнопки громкости - iOS
Я смотрю вокруг как сумасшедшие. Мне нужно сделать пользовательские действия на кнопку громкости долгое и короткое нажатие (например, Snapchat, короткое нажатие снимок, длинное нажатие записи видео), но не удалось.
Я использовал https://github.com/jpsim/JPSVolumeButtonHandler который позволил мне обнаружить событие нажатия кнопки регулировки громкости. но после того, как я очень старался, я не смог определить, когда это длинное нажатие и когда короткое нажатие.
также обратитесь к разделу "Обнаружение удержания кнопки громкости на iPhone"? (iOS 8)
мой код
//Volume button handler
self.volumeButtonHandler = [JPSVolumeButtonHandler volumeButtonHandlerWithUpBlock:^{
// Volume Up Button Pressed
[self onVolumeUp];
} downBlock:^{
// Volume Down Button Pressed
}];
-(void)onVolumeUp {
if(self.volButtonTimer) {
secondsElapsed = 1; //To detect long press
[self.volButtonTimer invalidate];
}
self.volButtonTimer = [NSTimer scheduledTimerWithTimeInterval:0.5
target:self
selector:@selector(onTimerFire)
userInfo:nil
repeats:NO];
}
-(void)onTimerFire {
NSLog(@"Long Press %d",secondsElapsed);
if (secondsElapsed > 1)
{
//Do Something
}
else secondsElapsed = 0;
}
Пожалуйста, мне нужна помощь в этом. Поиск по всему Google, но не удалось. Если Snapchat делает это, значит, это выполнимо.
Спасибо
1 ответ
Я сталкиваюсь с той же проблемой прямо сейчас. Я смог выяснить, что Apple отклонит ваше приложение, если оно изменит некоторые основные аппаратные функции. Смотрите эту ссылку: https://developer.apple.com/app-store/review/guidelines/. С другой стороны, это вводит в заблуждение, так как в App Store есть много приложений для камер, таких как Snapchat, которые явно используют кнопки громкости / долгое нажатие для других целей.
В любом случае, мне удалось обработать долгое нажатие, см. Эту тему: https://github.com/jpsim/JPSVolumeButtonHandler/issues/27