iPhone: UIImagePickerController - стандартное управление масштабированием не работает - PullRequest
2 голосов
/ 13 марта 2011

У меня есть UIImagePickerController, который представлен как модальный контроллер представления. Это работает нормально, за исключением случаев, когда я пытаюсь добавить что-либо в вид наложения камеры.

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

Вот код, который я использую:

        imagePickerController = [[UIImagePickerController alloc] init];
        imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;     
        imagePickerController.allowsEditing = NO;
        imagePickerController.delegate = self;
        imagePickerController.showsCameraControls = YES;
        imagePickerController.wantsFullScreenLayout = NO;
        [imagePickerController.cameraOverlayView addSubview:overlayView];

        [self presentModalViewController:imagePickerController animated:YES];

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

Спасибо:)

1 Ответ

0 голосов
/ 20 марта 2011

После долгих гадостей я наконец-то нашел решение. Не используйте свойство cameraOverlayView, вместо этого добавьте подпредставление к UIImagePickerController с рамкой размером CGRectZero.

В следующем примере overlayView - это пользовательский подкласс UIView, который рисует изображение и передает прикосновения следующему респонденту:

OverlayView *overlayView = [[OverlayView alloc] initWithFrame:CGRectZero];

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        imagePickerController = [[UIImagePickerController alloc] init];
        imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;     
        imagePickerController.allowsEditing = NO;
        imagePickerController.delegate = self;
        imagePickerController.showsCameraControls = YES;
        [imagePickerController.view addSubview:overlayView];
        statViewController.imagePickerController = imagePickerController;
    }

-

А потом все просто работает. Не уверен, что добавление подпредставления к UIImagePickerController задокументировано и нормально для Apple, но кучи других приложений используют это (или аналогичный обходной путь), поэтому не должны вызывать проблем с отправкой.

...