我希望有人可以幫助我解決這個奇怪的錯誤。我有一個彈出式按鈕來執行各種操作。有一個工具欄項目必須點擊才能顯示彈出窗口。這裏是被稱爲動作方法:Popover不會被解僱時被稱爲dismissPopoverAnimated或在彈出框外點擊一次
-(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;
}
正如你所看到的,我有保留的UIPopoverController參考屬性/伊娃(actionsPopUp)。當我想解散popover時,稍後用它來調用dismissPopoverAnimated。下面是它的使用的一個示例:
-(void)shareWishToEmail:(id)sender
{
[_actionsPopUp dismissPopoverAnimated:YES];
[[WishCloudService sharedInstance] showMailer:self withItems:[NSArray arrayWithObject:self.item] delegate:self modal:YES];
}
在該方法中,我首先關閉該酥料餅,然後執行與在酥料餅的被按下的按鈕相關聯的動作。不幸的是,這似乎不起作用。該行動得到執行,但popover並沒有被解僱。另外,當用戶在popover之外點擊一次時,它似乎不會被解僱。但如果再次點擊外面,它確實會被解僱。另一個觀察結果是,第一次點擊似乎隱藏/關閉了彈出式窗口的投影,而不是彈出窗口本身。這是第二次點擊,解散了popover。然而,沒有任何數量的通話解僱PopoverAnimated似乎根本不考慮popover。
我換了UIPopoverControllers,似乎在應用程序的其他部分工作,但獲得相同的結果,這導致我相信它是特定於UIView/UIViewController,我介紹popover 。我正在編程創建視圖,而不是通過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屬性用於在執行轉換時交換視圖。再次,不確定這是否相關,但我包括它的完整性,以防萬一它有所作爲。希望這些信息足以幫助我指出正確的方向。或者至少提出一些可能幫助我思考的其他問題。任何幫助將不勝感激。
解除投影?也許你有兩個在彼此頂部的彈出? – jtbandes
jtbandes,你是對的錢!我並沒有真正想到可能會有2個疊加的彈出。我認爲這是某種CALayer問題。當我在presentPopoverFromRect調用中設置一個斷點時,我發現它被調用了兩次。爲什麼?因爲我在工具欄項目上設置了兩次目標/動作。控制器中的createView方法實例化視圖,其init方法設置目標/操作。後來在createView方法中,我再次設置了目標/操作。衛生署!請提交您的回覆,我會將其標記爲答案。謝謝! – djilo