首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPRemoteCommandCenter在iOS中多次调用处理程序

MPRemoteCommandCenter在iOS中多次调用处理程序
EN

Stack Overflow用户
提问于 2016-03-19 15:09:47
回答 2查看 1.9K关注 0票数 14

MPRemoteCommandCenter多次调用处理程序块,并导致对选择器方法的不必要调用。

下面是代码片段:

代码语言:javascript
复制
MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];

[commandCenter.nextTrackCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {
    NSLog(@"NEXTTTTTT");
    return MPRemoteCommandHandlerStatusSuccess;
}];

[commandCenter.previousTrackCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {
    NSLog(@"PREVIOUSSS");
    return MPRemoteCommandHandlerStatusSuccess;
}];

当用户在锁定屏幕的情况下单击音乐播放器的下一步或上一步按钮时,会导致多次调用上面的块。

EN

回答 2

Stack Overflow用户

发布于 2016-06-01 02:56:07

该处理程序将在添加时被多次调用,即使它在同一对象上注册了多次。也许您的代码片段被多次调用。

票数 12
EN

Stack Overflow用户

发布于 2016-03-28 17:14:26

看起来你有多个对象的实例,你调用你的代码。如果你每首曲目都有一个新的UIViewController。旧的视图控制器可能仍然存在,并再次调用处理程序。

试着把你的代码放在

代码语言:javascript
复制
- (void)viewDidAppear:(BOOL)animated

然后像这样禁用它

代码语言:javascript
复制
- (void)viewWillDisappear:(BOOL)animated {
     MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];
    [commandCenter.nextTrackCommand removeTarget:self];
    [commandCenter.previousTrackCommand removeTarget:self];
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36098934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档