2012-01-07 2 views
-3

Работаю в приложении для камеры, и у меня есть простая, но неприятная проблема.Борьба с init Camera

[self initCamera]; 

Все что мне нужно - это код, чтобы остановить камеру после того, как пользователь завершил работу с камерой. Я уже пробовал [release camera]; и т.д.

Любая помощь была бы замечательной!

Вот фактический код, который может помочь ...

- (void) viewDidAppear:(BOOL)animated { 
    [self initCamera]; 
    [self startCamera]; 
self.overlayLabel.text = @"Tap to take pic!"; 

UIButton *binocsButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
binocsButton.tag = BINOCS_BUTTON_TAG; 
[binocsButton setTitle:@"Toggle Binocs" forState:UIControlStateNormal]; 
binocsButton.backgroundColor = [UIColor clearColor]; 
binocsButton.frame = CGRectMake(10, 426, 100, 44); 
[binocsButton addTarget:self action:@selector(buttonTapped:)  forControlEvents:UIControlEventTouchUpInside]; 
[self.overlayView addSubview:binocsButton]; 

    UIButton *binocsButton2 = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
binocsButton2.tag = BINOCS_BUTTON2_TAG; 
[binocsButton2 setTitle:@"Back" forState:UIControlStateNormal]; 
binocsButton2.backgroundColor = [UIColor clearColor]; 
binocsButton2.frame = CGRectMake(210, 426, 100, 44); 
[binocsButton2 addTarget:self action:@selector(button2Tapped:) forControlEvents:UIControlEventTouchUpInside]; 
[self.overlayView addSubview:binocsButton2]; 
    } 

    - (void) initCamera { 
    if ([BTLFullScreenCameraController isAvailable]) { 

    NSLog(@"Initializing camera."); 
    BTLFullScreenCameraController *tmpCamera = [[BTLFullScreenCameraController alloc] init]; 
    [tmpCamera.view setBackgroundColor:[UIColor blueColor]]; 
    [tmpCamera setCameraOverlayView:self.overlayView]; 
    tmpCamera.overlayController = self; 

    #ifdef BTL_INCLUDE_IMAGE_SHARING 
    BTLImageShareController *shareController = [[BTLImageShareController alloc] init]; 
    shareController.delegate = self; 
    [self.view addSubview:shareController.view]; 
    tmpCamera.shareController = shareController;   
    #endif 

    self.camera = tmpCamera; 
    [tmpCamera release]; 
    } else { 
    NSLog(@"Camera not available."); 
    } 
    } 

    - (void)startCamera { 
    [self.camera displayModalWithController:self animated:YES]; 
    } 

    - (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation { 

    switch (interfaceOrientation) { 
    case UIInterfaceOrientationLandscapeLeft: 
    case UIInterfaceOrientationLandscapeRight: 
    [self toggleAugmentedReality]; 
    break; 
    } 

    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
    } 

Это код, который я пытался закрыть его, в основном, когда вы нажмете binocsbutton2 я хочу его, чтобы закрыть окно и вернуться к Главное меню:

- (void)button2Tapped:(id)sender { 
    // [camera release]; 
    // [BTLFullScreenCameraController release]; 
    // [self.camera dismissModalViewControllerAnimated:NO]; 
    // self.camera = nil; 
[self dismissModalViewControllerAnimated:NO]; 
[self dismissModalViewControllerAnimated:NO]; 
    } 

Линии с // являются теми, которые я пытался закрыть работой камеры. Но отладчик просто показывает, что он снова инициализируется!

+1

Что такое 'камера'? Что делает '[self initCamera],' do? – Emil

+0

запускает заднюю камеру для съемки. Все, что мне нужно, это противоположность initCamera – Clive

+1

Можно ли увидеть 'initCamera'? Трудно ответить, когда вы вообще не предоставляете нам никакой информации. – Emil

ответ

0

Похоже, вы просто пытаетесь получить доступ к камере iPhone, чтобы сделать снимок. В этом случае должно помочь This link.

+0

Код, который у меня есть, довольно сложный и включает в себя наложения и сохранение изображений, что мне действительно нужно, это действительно противоположность «init». Или есть много способов закрыть камеру. В настоящее время камера закрывается (анимируется) при нажатии binocsbutton2, но затем перезапускается и поэтому вид не будет закрыт. Если я выберу линию для камеры init, все это будет работать (но без камеры!) – Clive