我希望有人能帮我解决这个奇怪的bug。我有一个带有按钮的弹出窗口,可以执行各种操作。有一个工具栏项目必须单击才能弹出弹出窗口。下面是调用的操作方法:
-(IBAction)showActions:(id)sender
{
ActionsPopUpController* controller = [[ActionsPopUpController alloc] initWithDelegate:self state:DELETE_ENABLED | FACEBOOK_ENABLED | TWITTER_ENABLED | EMAIL_ENABLED];
_actionsPopUp = [[UIPopoverController alloc] initWithContentViewController:controller];
[controller release];
[_actionsPopUp presentPopoverFromRect:_actionButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
_actionsPopUp.delegate = self;
}如您所见,我有一个属性/ivar (actionsPopUp),它保留了对UIPopoverController的引用。稍后当我想要关闭弹出窗口时,它被用来调用dismissPopoverAnimated。下面是它的用法示例:
-(void)shareWishToEmail:(id)sender
{
[_actionsPopUp dismissPopoverAnimated:YES];
[[WishCloudService sharedInstance] showMailer:self withItems:[NSArray arrayWithObject:self.item] delegate:self modal:YES];
}在此方法中,我首先关闭popover,然后执行与popover中按下的按钮相关联的操作。不幸的是,这似乎不起作用。将执行该操作,但不会取消弹出窗口。此外,当用户在弹出窗口之外单击一次时,它似乎不会被忽略。但如果再次单击外部,它确实会被取消。另一个观察结果是,第一次点击似乎隐藏/消除了弹出窗口的阴影,而不是弹出窗口本身。这是第二次点击弹出窗口。然而,无论调用多少dismissPopoverAnimated,似乎都不会忽略弹出窗口。
我用UIPopoverControllers替换了似乎在应用程序的其他部分工作,但得到了相同的结果,这使我相信它是特定于我正在呈现弹出窗口的UIView/UIViewController。我以编程方式创建视图,而不是通过NIB。我不知道为什么我决定这样做,但我不认为它应该是相关的。如果不是这样,请让我知道。下面是我的loadView方法:
-(void)loadView
{
self.view = [self createView:_item];
self.currentView = self.view;
_wishItemViews = [[NSMutableDictionary dictionary] retain];
[_wishItemViews setObject:_currentView forKey:[NSNumber numberWithInteger:_currentIndex]];
}我有一个currentView属性,因为我需要能够滑入滑出新视图,并且我正在使用CATransition动画来实现这一点。currentView属性用于在执行转换时交换视图。再说一次,我不确定这是否相关,但我将其包括在内是为了完整性,以防它确实有所不同。希望这些信息足以让一些人帮我指明正确的方向。或者至少提示一些额外的问题,可能会帮助我思考这个问题。任何帮助都将不胜感激。
发布于 2011-08-27 12:46:25
另一个观察结果是,第一次点击似乎隐藏/消除了弹出窗口的阴影,而不是弹出窗口本身。
看起来你偶然发现了这种罕见的双弹幕。;-)
https://stackoverflow.com/questions/7210897
复制相似问题