UIImagePickerController и нажатие клавиш - PullRequest
0 голосов
/ 23 марта 2011

Я создал простой подкласс UIImagePickerController следующим образом:

@interface CustomImagePicker : UIImagePickerController <UITextViewDelegate> {
}

-(void) viewDidAppear:(BOOL)animated{
    // make sure to call the same method on the super class!!!
    //
    [super viewDidAppear:animated];

    UITextView *textView = [[[UITextView alloc] init] autorelease];
    [self.view addSubview:textView];

    [textView becomeFirstResponder];
    [textView setDelegate:self];
    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(keyPressed:) name: UITextViewTextDidChangeNotification object: nil];

}

- (void)textViewDidChange:(UITextView *)textView{
    NSLog(@"Picture Taken 2");

    [self takePicture];
}

-(void) keyPressed: (NSNotification*) notification
{
    NSLog(@"Picture Taken 1");
    [self takePicture];
}

В моем главном окне я открываю это модально:

   camera = [[CustomImagePicker alloc] init]; 
            camera.delegate = self; 
            camera.sourceType = UIImagePickerControllerSourceTypeCamera; 
            camera.allowsEditing = NO; 
            camera.showsCameraControls = NO;
            camera.wantsFullScreenLayout = NO;
            //camera.cameraOverlayView  = myView;

            [self presentModalViewController:camera animated:YES]; 

Ни нажатие клавиш, ни textviewDidChange никогда не получаютзвонил.

Кто-нибудь есть опыт с этим?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 25 апреля 2011

Я думаю, вам не разрешено создавать подкласс UIImagePickerController.

Документация на - http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImagePickerController_Class/UIImagePickerController/UIImagePickerController.html определяет " Внимание! Класс UIImagePickerController поддерживает только портретный режим. Этот класс предназначен для использования как есть и не поддерживает создание подклассов. "

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

я считаю, что это должно работать. Нужна подробная информация.

В качестве альтернативы попробуйте использовать UITextViewDelegate

UITextView *textView = [[[UITextView alloc] init] autorelease];
[self.view addSubview:textView];

[textView becomeFirstResponder];
[textView setDelegate:self];

И реализовать; - (void)textViewDidChange:(UITextView *)textView; метод для вашего класса.

Для справки: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html

...