检测音量按钮的长按和短按 - iOS

Posted

技术标签:

【中文标题】检测音量按钮的长按和短按 - iOS【英文标题】:Detect long and short press of volume button - iOS 【发布时间】:2016-08-31 15:47:38 【问题描述】:

我一直像疯子一样四处张望。我需要对音量按钮长按和短按执行自定义操作(如 snapchat、短按拍照、长按录制视频)但失败了。

我用过https://github.com/jpsim/JPSVolumeButtonHandler 这使我能够检测到音量按钮按下事件。但经过非常努力后,我未能检测到什么时候是长按,什么时候是短按。

也可以参考Detect iPhone Volume Button Hold? (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;


我需要这方面的帮助。在谷歌上搜索但失败了。如果 snapchat 正在这样做,则意味着它是可行的。

谢谢

【问题讨论】:

【参考方案1】:

我现在面临同样的问题。我能发现的是,如果你的应用程序改变了一些基本的硬件功能,Apple 会拒绝它。请参阅此链接:https://developer.apple.com/app-store/review/guidelines/。另一方面,它具有误导性,因为 App Store 上有许多相机应用程序,例如 Snapchat,显然将音量按钮/长按用于其他目的。

无论如何,我设法处理长按,请参阅此线程:https://github.com/jpsim/JPSVolumeButtonHandler/issues/27#issuecomment-253979943

【讨论】:

啊,那些 Snapchat - 规则破坏者! 是的,我们也实现了这样的功能,但是使用了 dispatch_after() 方法。这是我个人的抱怨,因为我们让 Snapchat 像 App 一样。需要为应用商店禁止 Snapchat 收集声音) 我明白了,您是否尝试将您的应用提交到 App Store?只是好奇是否真的被拒绝。

以上是关于检测音量按钮的长按和短按 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

Android RecyclerView 监听Item短按和长按

onKeyDown 和 onKeyLongPress

Android RecyclerView 监听Item短按和长按

Android RecyclerView 监听Item短按和长按

检测 iPhone 音量按钮保持? (iOS 8)

UICollectionView 中的长按和平移手势