2013-04-12 2 views
0

Как это сделать для iPad? он отлично работает на iphone, но Apple требует, чтобы все приложения работали на ipad. любая помощь с этим?Сделайте эту работу и для iPad?

- (IBAction)chooseImage:(id)sender 
    { 
     self.imagePicker = [[UIImagePickerController alloc] init]; 
     self.imagePicker.delegate = self; 
     [self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 


     [self presentViewController:self.imagePicker animated:YES completion:nil]; 
     } 

    - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    { 
     self.image = info[UIImagePickerControllerOriginalImage]; 
     [self.imageView setImage:self.image]; 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    } 

    - (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker 
    { 
    [self dismissViewControllerAnimated:YES completion:nil]; 

    } 

Теперь я получил это далеко! Теперь он больше не разбивается, когда я выбираю изображение из библиотеки фотографий, используя ipad. Проблема в том, что изображение не выбрано?

Любые предложения?

- (IBAction)chooseImage:(id)sender 
{ 

self.imagePicker = [[UIImagePickerController alloc] init]; 
self.imagePicker.delegate = self; 
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ 

    _popover = [[UIPopoverController alloc] initWithContentViewController:_imagePicker]; 
    _popover.delegate = self; 
    [_popover setPopoverContentSize:CGSizeMake(320, 460)]; 
    [_popover presentPopoverFromBarButtonItem:[[UIBarButtonItem alloc]initWithCustomView:(UIButton*)sender] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
} 

[self presentViewController:self.imagePicker animated:YES completion:nil]; 

} 
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
if 
    (self.popover && self.popover.popoverVisible) { 
    [self.popover dismissPopoverAnimated:YES]; 
} 
else 
    self.image = info[UIImagePickerControllerOriginalImage]; 
[self.imageView setImage:self.image]; 
[self dismissViewControllerAnimated:YES completion:nil]; 
} 

- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
[self dismissViewControllerAnimated:YES completion:nil]; 

} 
+1

Является ли ваше приложение iPhone или только это универсальное? Если это только iPhone, тогда ваш код в порядке. Если он универсален, вы должны показать сборщик изображений библиотеки фотографий в 'UIPopoverController', как описано в документах для' UIImagePickerController'. – rmaddy

+0

Да, что он сказал. – matt

+0

Мое приложение - только iphone, и это отлично работает на iphone. но, к моему удивлению, при принятии этого приложения в AppStore они, видимо, требуют, чтобы ВСЕ приложения должны были поддерживать iPad. Поэтому я задаюсь вопросом, могу ли я соответствовать этому, не переходя к универсальному? –

ответ

0

Здесь нет раздел из моей книги на UIImagePickerController:

http://www.apeth.com/iOSBook/ch30.html#_uiimagepickercontroller

Хорошо, извините, не универсальный код. Но это работает точно так же, архитектурно, как и для MPMediaPickerController, для которых я делаю дать код, показывающий, как это сделать как на iPhone и IPad:

http://www.apeth.com/iOSBook/ch29.html#EXmodalOrPop

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

Вот фактический код из универсального приложения я просто написал:

- (IBAction)doPickAPicture:(id)sender { 

    UIImagePickerControllerSourceType type = UIImagePickerControllerSourceTypePhotoLibrary; 
    BOOL ok = [UIImagePickerController isSourceTypeAvailable:type]; 
    if (!ok) { 
     return; 
    } 
    UIImagePickerController* picker = [UIImagePickerController new]; 
    picker.sourceType = type; 
    picker.mediaTypes = @[(__bridge NSString*)kUTTypeImage]; 
    picker.delegate = self; 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
     [self presentViewController:picker animated:YES completion:nil]; 
    else { 
     UIPopoverController* pop = [[UIPopoverController alloc] initWithContentViewController:picker]; 
     [pop presentPopoverFromRect:[sender bounds] inView:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
     self.currentPop = pop; 
    } 
} 

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    if (self.currentPop && self.currentPop.popoverVisible) { 
     [self.currentPop dismissPopoverAnimated:YES]; 
    } else { 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    } 
    [CATransaction setCompletionBlock:^{ 
     self.currentPop = nil; 
     // do more stuff 
    }]; 
} 
Смежные вопросы