我正在尝试使用插入式耳机的按钮(类似于压力的东西)在我自己的应用程序内触发不同的动作。但是我注意到,无论我使用MPRemoteCommandCenter
还是remoteControlReceivedWithEvent
委托,我都会收到明显滞后的事件。更糟糕的是,如果我尝试快速按下双按钮,我只会得到一个UIEventTypeRemoteControl
。
有没有人遇到类似的问题,知道这个的原因,甚至更好地了解一些解决方法?在ios8和ios9下测试。
答案 0 :(得分:1)
快速双击确实是单个用户操作,因为这是几乎所有使用耳机控件进行输入的应用程序中的所需行为。它节省了开发人员必须手动去抖动,排队和解析传入的控制事件,这是一件好事(tm)!
为此,系统在等待进一步的用户输入时会引入少量延迟。完成此操作只需几百毫秒,之后您将在代码中收到该事件。
一个长期,痛苦,但希望有用的双按检测示例:
了解单次/双次/三次按压检测需要延迟。
当事件到达您的应用程序时,它将有一个子类型,描述用户所做的点击类型:
let rc = event!.subtype
print("received remote control \(rc.rawValue)") // 101 = pause, 100 = play
switch rc {
case .RemoteControlTogglePlayPause:
// ..
case .RemoteControlPlay:
// ..
case .RemoteControlPause:
// ..
default:break
}
similar question上的答案指出这些事件代码整数将是类似的;
100 = play
101 = pause
103 = single mic click
104 = double mic click
105 = triple mic click
etc ...