Я столкнулся со странной проблемой с UIPopoverController
. При создании всплывающего окна мы установили свойство сквозных просмотров. Мы хотели, чтобы всплывающее окно закрывалось, если мы нажмем где-нибудь за его пределами.
[self.popover presentPopoverFromBarButtonItem:barButtonItemView
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
// comment the below line if only toggle feature is expected to close the popover
[self.popover setPassthroughViews:self.tileMenu.tileMenuButtonsArray];
Он работает нормально, пока не изменится ориентация устройства. после изменения ориентации касание снаружи не дает никакого эффекта. Метод - popoverControllerShouldDismissPopover
- никогда не вызывается после изменения ориентации. Если я снова нажму на кнопку, то она начнет нормально работать. то есть он перезапускает всплывающее окно и закрывает всплывающее окно, если я нажимаю снаружи.
Сейчас работаю над IOS 7.
Кто-нибудь сталкивался с этой проблемой раньше? любая помощь будет оценена.
Обновление: я попытался закрыть и снова открыть всплывающее окно. Тоже не получилось:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration
{
if ( [self.popover isPopoverVisible] )
{
[self.popover dismissPopoverAnimated:NO];
self.reopenPopover = YES;
}
}
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
if (self.reopenPopover) {
[self presentPopover:self.selectedTileMenuBarButtonItem];
}
self.reopenPopover = NO;
}
-(void) presentPopover:(UIBarButtonItem *) barButtonItemView {
self.selectedTileMenuBarButtonItem = barButtonItemView;
[self.popover presentPopoverFromBarButtonItem:barButtonItemView
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
// comment the below line if only toggle feature is expected to close the popover
[self.popover setPassthroughViews:self.tileMenu.tileMenuButtonsArray];
}
UIButton *control = (UIButton *) sender; UIBarButtonItem *barButtonItemView = [[UIBarButtonItem alloc] init]; [barButtonItemView setCustomView:control];
из-за более ранней проблемы, с которой мы столкнулись при изменении ориентации. А затем использовать его для всплывающего окна, используя вышеупомянутый способ - person Peyush Goel   schedule 09.10.2013