我通过使用Vuforia进行开发,在iOS上进行关于增强现实的项目。
我在开始FrameMarkerAppDelegate
之前创建了视图(扫描AR视图)。在视图页面上按UIButton
后,FrameMarkerAppDelegate
即被启动。 FrameMarkerAppDalegate
运行完成后,背景是相机背景。然后我触摸相机背景并选择返回查看页面,现在我们再次进入查看页面。
我的问题是在我再次按下UIButton
之后,相机背景没有出现。它仍然是查看页面,但相机已激活。
ViewController.mm
- (IBAction)btnSelect:(id)sender {
FrameMarkersAppDelegate *appDelegate = [[FrameMarkersAppDelegate alloc] init];
[appDelegate startFrameAppDelegate];
}
FrameMarkerAppDelegate.mm
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
CGRect screenBounds = [[UIScreen mainScreen] bounds];
window = [[UIWindow alloc] initWithFrame: screenBounds];
[self setupSplashContinuation];
[QCARutils getInstance].targetType = TYPE_FRAMEMARKERS;
arParentViewController = [[ARParentViewController alloc] init];
arParentViewController.arViewRect = screenBounds;
[window insertSubview:arParentViewController.view atIndex:0];
[window makeKeyAndVisible];
return YES;
}
-(void)startFrameAppDelegate
{
CGRect screenBounds = [[UIScreen mainScreen] bounds];
window = [[UIWindow alloc] initWithFrame: screenBounds];
[self setupSplashContinuation];
[QCARutils getInstance].targetType = TYPE_FRAMEMARKERS;
arParentViewController = [[ARParentViewController alloc] init];
arParentViewController.arViewRect = screenBounds;
[window insertSubview:arParentViewController.view atIndex:0];
[window makeKeyAndVisible];
}
答案 0 :(得分:0)
有同样的问题。基本上我认为错误归结为将非弧vuforia sdk与弧项目合并。我发现当我使用vuforia摄像头作为开放视图控制器时,'vView for CCViewController'中的'dealloc'方法在vuforia viewcontroller第一次运行时没有被调用。但是之后每次都会被调用。看起来太复杂了我没有正确锻炼,所以我通过在'ImageTargetsParentViewController'之前用我的navigationcontroller中的方法推送ImageTargetsParentViewController来粘贴一个blankviewcontroller来攻击它(此方法只是推送了ImageTargetsParentViewController视图控制器)。这似乎解决了它,现在每次都会调用dealloc。
<强> blankviewcontroller.m 强>
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[((CARNavigationController *)self.navigationController) firstLoadOpenAr];
});
}