ios ipad ios8 uipopovercontroller

UIPopoverController no se presenta en iPad iOS 8



ios8 (2)

Estoy usando UIPopoverController en iOS 8 iPad para imagepicker Está trabajando en iOS 7 pero no en iOS 8. El popover no se muestra y se llama inmediatamente a popoverControllerDidDismissPopover Sugiera una solución. Aquí el código está usando:

UIPopoverController *popVC= [[UIPopoverController alloc] initWithContentViewController:pickerController]; _pop = popVC; _pop.delegate = self; [_pop presentPopoverFromRect:attachBtnFrame inView:_sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:NO];

Gracias..


Pon este método en tu appDelegate.m

+(BOOL)isIOS8 { NSString* version=[[UIDevice currentDevice] systemVersion]; if ([version integerValue]>=8.0) { return YES; } else { return NO; } }

ahora, cuando quiera usar PopoverController, simplemente compruebe el sistema operativo del sistema por el método anterior, como

if([AppDelegate isIOS8])

que usar este método

if([AppDelegate isIOS8]) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{[self.popover presentPopoverFromRect:popoverRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];}); } else { [self.popover presentPopoverFromRect:popoverRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES ]; }

este método me funciona muy bien y debería funcionar para usted ...


Finalmente encontré la solución: Presente el Popover en el hilo principal como se muestra a continuación.

if([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [_pop presentPopoverFromRect:attachBtnFrame inView:_sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:NO]; }); }