• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c++ - 从后台进入后iOS Vuforia错误

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:12:09 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在我的 iOS 应用程序中使用 Vuforia SDK,版本 6.2.9。 一切正常,但应用从后台进入时出现错误。

运行 VUFORIA 的 View Controller 正在监听 UIApplicationWillResignActiveNotificationUIApplicationDidBecomeActiveNotification 通知。 在 UIApplicationWillResignActiveNotification 暂停 AR 的情况下,在 UIApplicationDidBecomeActiveNotification 的情况下恢复 AR。

// we use the iOS notification to pause/resume the AR when the application goes (or come back from) background

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selectorselector(pauseAR)
 name:UIApplicationWillResignActiveNotification
 object:nil];

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selectorselector(resumeAR)
 name:UIApplicationDidBecomeActiveNotification
 object:nil];

这些是方法

- (void) pauseAR {
   NSError * error = nil;
   if (![vapp pauseAR:&error]) {
      NSLog(@"Error pausing AR:%@", [error description]);
   }
}

- (void) resumeAR {

    NSError * error = nil;
    if(! [vapp resumeAR:&error]) {
        NSLog(@"Error resuming AR:%@", [error description]);
    }

    // on resume, we reset the flash
    Vuforia::CameraDevice::getInstance().setFlashTorchMode(false);

    [self handleRotation:self.interfaceOrientation];
}

当我返回扫描模式时,应用程序从后台进入后,相机被卡住,出现错误 找不到响应选择器 renderFrameVuforia 的带有 CAEAGLLayer 或 CAMetalLayer 层类的 UIView

2017-07-17 11:13:01.187406+0200 App[8689:2961061] frame: {{0, 0}, {375, 667}}
2017-07-17 11:13:01.243707+0200 App[8689:2961061] DEBUG/AR(8689) Could not find a UIView with CAEAGLLayer or CAMetalLayer layer class that responds to selector renderFrameVuforia
2017-07-17 11:13:01.253958+0200 App[8689:2961061] Vuforia Library version 6.2.9
2017-07-17 11:13:01.731099+0200 App[8689:2961061] AR View: Rotating to Portrait
2017-07-17 11:13:01.731406+0200 App[8689:2961061] frame: {{0, 0}, {375, 667}}
2017-07-17 11:13:01.731562+0200 App[8689:2961061] VideoBackgroundConfig: size: 750,1334
2017-07-17 11:13:01.731589+0200 App[8689:2961061] VideoMode:w=1280 h=720
2017-07-17 11:13:01.731611+0200 App[8689:2961061] width=750.000 height=1334.000
2017-07-17 11:13:01.731638+0200 App[8689:2961061] ViewPort: X,Y: 0,0 Size X,Y:750,1334
2017-07-17 11:13:02.598959+0200 App[8689:2962160] INFO/AR(8689) 2017-07-18 11:13:02: Completed CloudReco transaction with ID '6f5c61ecc07741a7b652242abf909479'
2017-07-17 11:13:02.843834+0200 App[8689:2961061] frame: {{0, 0}, {375, 667}}
2017-07-17 11:13:02.844215+0200 App[8689:2961061] frame: {{0, 0}, {375, 667}}
2017-07-17 11:13:02.860971+0200 App[8689:2961061] DEBUG/AR(8689) UIView has CAEAGLLayer layer class
2017-07-17 11:13:02.861114+0200 App[8689:2961061] DEBUG/AR(8689) UIView does not respond to selector renderFrameVuforia
2017-07-17 11:13:02.861191+0200 App[8689:2961061] DEBUG/AR(8689) UIView has CAEAGLLayer layer class
2017-07-17 11:13:02.861222+0200 App[8689:2961061] DEBUG/AR(8689) UIView does not respond to selector renderFrameVuforia

感谢您的帮助!



Best Answer-推荐答案


你在哪个方法中调用 pauseAR()

当我回到 ViewController(拥有 EAGLView)时,我遇到了同样的问题,相机被卡住了。

我在 viewWillDisappear() 中调用 pauseAR() 并在 viewWillAppear() 中调用 resumeAR(),如问题出在 EAGLView 中的委托(delegate)方法 renderFrameVuforia() 从未被调用,我认为这是导致问题的原因:

Could not find a UIView with CAEAGLLayer or CAMetalLayer layer class that responds to selector renderFrameVuforia

于是我查阅了 Vuforia 开发者库,发现:

The app's view hierarchy is set up completely before calling QCAR:nResume() (at which point QCAR attempts to locate the app's view conforming to UIGLViewProtocol).

我将调用位置的resumeAR()方法更改为viewDidAppear(),一切正常。希望对您有所帮助。

关于c++ - 从后台进入后iOS Vuforia错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45140805/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap