gpt4 book ai didi

objective-c - 在 TabBar 控制的 iOS 应用程序中的第二个选项卡中进行交互时,将 RemoteControlEvents 接收到第一个选项卡

转载 作者:行者123 更新时间:2023-12-01 04:36:08 24 4
gpt4 key购买 nike

我正在开发一个带有标签栏 Controller 的 iOS 应用程序。在第一个选项卡中,我放置了一个 AVQueuePlayer 实例来开始播放来自网络的音乐。我完成了所有编码以允许通过远程控制事件播放和暂停事件。但是只有当我停留在第一个选项卡时,我才能接收到远程控制事件。当我切换到其他选项卡时,第一个选项卡没有收到远程控制事件。

当我在第一个选项卡 View Controller 中放置以下行时,即使我留在第二个选项卡中,我也可以接收到第一个选项卡的远程控制事件。

- (BOOL)canResignFirstResponder
{
return NO;
}

但我在其他 View 中有一些文本字段,用户必须与之交互。通过不在第一个选项卡中退出第一响应者,我无法在其他选项卡中输入文本。

当我的用户与第二个选项卡中的应用交互时,请帮助我如何处理远程控制事件以控制第一个选项卡中的 AVQueuePlayer 实例?

感谢您的帮助!

最佳答案

好的。我自己想出来的。

我在实现文件的开头为 avqueueplayer 创建了一个全局变量。在 viewDidLoad 方法中分配并启动 AVQueuePlayer。创建了一个类方法来处理播放和暂停时的操作。并在其他 View Controller 中调用此类方法以直接从这些 View Controller 处理远程控制事件。这是我编码的示例:

//playerView header file

@interface playerView : UIViewController

+ (void)togglePlayPause;

@end

//playerView Implementation File

#import "playerView.h"

@interface playerView ()
@end

@implementation playerView

AVQueuePlayer *player;

- (void)viewDidLoad
{
[super viewDidLoad];
player = [[AVQueuePlayer alloc] initWithPlayerItem:[AVPlayerItem playerItemWithURL: someurl]];
}

+ (void) togglePlayPause
{
if (player.rate == 1.0)
{
[player pause];
}
else if ((player.rate == 0.0) && ([player status]!= 2))
{
[player play];
}
}

// include all other methods to handle remote control events as laid in apple documentation

@end



//otherView Implementation file

#include "playerView.h"


@interface otherView ()

@end

@implementation otherView

// include all other methods to handle remote control events as laid in apple documentation

- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent
{

if (receivedEvent.type == UIEventTypeRemoteControl) {

switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
[playerView togglePlayPause];
break;
default:
break;
}
}
}

@end

有关处理苹果文档中规定的远程控制事件的所有其他方法,请参阅:

Event Handling Guide for iOS - Remote Control of Multimedia

关于objective-c - 在 TabBar 控制的 iOS 应用程序中的第二个选项卡中进行交互时,将 RemoteControlEvents 接收到第一个选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10940201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com