IOS UI popoverController不';在设备方向改变后,不要通过点击外部来关闭
我在使用IOS UI popoverController不';在设备方向改变后,不要通过点击外部来关闭,ios,objective-c,ios7,uipopovercontroller,device-orientation,Ios,Objective C,Ios7,Uipopovercontroller,Device Orientation,我在使用UIPopoverController时遇到了一个奇怪的问题。在创建popover时,我们设置了passthrough视图属性。如果我们点击它外面的任何地方,我们想把它关闭 [self.popover presentPopoverFromBarButtonItem:barButtonItemView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
UIPopoverController
时遇到了一个奇怪的问题。在创建popover时,我们设置了passthrough视图属性。如果我们点击它外面的任何地方,我们想把它关闭
[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];
它工作正常,直到设备的方向发生变化。方向改变后,外部攻丝没有影响。方向更改后,永远不会调用方法-popOvercontrollersoulddismisspover
。如果我再按一下按钮,它就会开始正常工作。i、 e.如果我点击外面,它会重新启动popover并关闭popover
我现在正在做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];
}
我现在已经解决了执行中的一个问题,并且它起了作用。 我们有UIButtons而不是UIBarButton,但由于方法
presentPopoverFromRect
的一些早期问题(当ipad的方向发生变化时会出现问题),我们以这种方式呈现Popover:
UIButton *control = (UIButton *) sender;
UIBarButtonItem *barButtonItemView = [[UIBarButtonItem alloc] init];
[barButtonItemView setCustomView:control];
[self.popover presentPopoverFromBarButtonItem:barButtonItemView permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
这不是必需的。以下代码修复了该问题:
[self.popover presentPopoverFromRect:[sender bounds] inView:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
// comment the below line if only toggle feature is expected to close the popover
[self.popover setPassthroughViews:self.tileMenu.tileMenuButtonsArray];
你在任何地方使用过contentSizeForViewInPopover吗?是的。。。它在我们加载到popover中的视图中使用,然后使用preferredContentSize代替它,因为它在IOS 7Popover中被去除,在旋转时再次使其可见。这将起作用…这是一个黑客攻击,可能会起作用。我现在正在尝试。但是有没有合适的方法来处理呢?