Как использовать UIImagePickerController просто для отображения камеры, а не для съемки? - PullRequest
0 голосов
/ 08 апреля 2010

Я хотел бы знать, как открыть камеру внутри предварительно определенного кадра (не весь экран). Когда вид загружается, у меня есть поле, и внутри него я хочу отобразить то, что видит камера. Я не хочу делать снимок, просто использую камеру в качестве видоискателя. Я искал этот сайт и еще не нашел то, что я ищу. Пожалуйста, помогите.

Спасибо!
Thomas

Обновление 1:

Вот то, что я пробовал до сих пор.

1.) Я добавил UIImageView в xib.
2.) Подключите следующую розетку к UIImageView в IB

IBOutlet UIImageView * cameraWindow;

3.) Я поместил следующий код в viewWillAppear

-(void)viewWillAppear:(BOOL)animated
{
 [super viewWillAppear:animated];
 UIImagePickerController *picker = [[UIImagePickerController alloc] init];
 picker.delegate = self;

 picker.sourceType = UIImagePickerControllerSourceTypeCamera;
 [self presentModalViewController:picker animated:YES];

 NSLog(@"viewWillAppear ran");
}

Но этот метод не запускается, о чем свидетельствует отсутствие в моей консоли оператора NSLog. Пожалуйста, помогите!

Спасибо
Томас


Обновление 2:

ОК, я запустил его, поместив код в viewDidLoad , но моя камера все еще не появляется ... какие-либо предложения? Кто-нибудь....? Я читал ссылку на класс * UIImagePickerController , но я не уверен, как это понять. Я все еще изучаю iPhone, так что это немного сложно. Пожалуйста, помогите!

- (void)viewDidLoad 
{ 
 [super viewDidLoad]; 

 // Create a bool variable "camera" and call isSourceTypeAvailable to see if camera exists on device
 BOOL camera = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];

 // If there is a camera, then display the world throught the viewfinder
 if(camera)
 { 
  UIImagePickerController *picker = [[UIImagePickerController alloc] init];

  // Since I'm not actually taking a picture, is a delegate function necessary?
  picker.delegate = self;

  picker.sourceType = UIImagePickerControllerSourceTypeCamera;
  [self presentModalViewController:picker animated:YES];

  NSLog(@"Camera is available");
 }

 // Otherwise, do nothing.
 else 
  NSLog(@"No camera available");
}

Спасибо!
Томас


Обновление 3:

A-HA! Нашел это в Справочнике по классу Apple.

Обсуждение

Делегат получает уведомления когда пользователь выбирает изображение или фильм, или выходит из интерфейса выбора. делегат также решает, когда уволить интерфейс выбора, так что вы должны предоставить делегату использовать сборщик. Если это свойство ноль, сборщик немедленно уволен, если вы попытаетесь покажи это.

Собираюсь поиграть с делегатом сейчас. Тогда я собираюсь прочитать на WTF делегата. Backwards? Безотносительно: -p


Обновление 4:

Две функции-делегаты для класса - imagePickerController: didFinishPickingMediaWithInfo: - imagePickerControllerDidCancel:

и поскольку я на самом деле не хочу выбирать изображение или давать пользователю возможность отменить, я просто определяю методы. Они никогда не должны бежать, хотя .... Я думаю.

1 Ответ

0 голосов
/ 25 мая 2010

добавить

[подборщика dismissModelViewControllerAnimated: ДА];

делегировать тела методов.

Это отклонит представление.

...