Обнаружить долгое и короткое нажатие кнопки громкости - 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

Другие вопросы по тегам