использовать UIAlertView, когда камера работает в iPhone - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь вызвать AlertView, когда моя камера распознает лицо с помощью OpenCV.Мне удается сделать обнаружение лица и могу успешно вывести NSLog.Но когда я попытался вызвать представление предупреждений с помощью

NSLog(@"Face Detected");
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Face Detected" message:@"Do you really  want to try again?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil] autorelease];

[alert addButtonWithTitle:@"Yes"];

[alert show];
[alert release];

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

Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 23 июня 2011

Удалить [alert release]. Вы уже назвали autorelease на нем.

Также вы можете интегрировать [alert addButtonWithTitle:@"Yes"]; в инициализатор:

UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Face Detected" 
                                                message:@"Do you really  want to try again?" 
                                               delegate:self 
                                      cancelButtonTitle:@"Cancel" 
                                      otherButtonTitles:@"OK", nil] autorelease];
1 голос
/ 23 июня 2011

откуда ты звонишь? Основной поток или вторичный? Потому что UIKit всегда должен выполняться в основном потоке.

Пример кода:

- (void)opencvFaceDetect
{
  // stuff before
  [self performSelectorOnMainThread: @selector(openAlertView) withObject:nil waitUntilDone:false];
  // stuff after
}

, а затем

- (void)openAlertView
{
  UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Face Detected" 
                                                message:@"Do you really  want to try again?" 
                                               delegate:self 
                                      cancelButtonTitle:@"Cancel" 
                                      otherButtonTitles:@"OK", nil] autorelease];
}
...