2011-08-26 58 views
1

我希望有人可以幫助我解決這個奇怪的錯誤。我有一個彈出式按鈕來執行各種操作。有一個工具欄項目必須點擊才能顯示彈出窗口。這裏是被稱爲動作方法: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屬性用於在執行轉換時交換視圖。再次,不確定這是否相關,但我包括它的完整性,以防萬一它有所作爲。希望這些信息足以幫助我指出正確的方向。或者至少提出一些可能幫助我思考的其他問題。任何幫助將不勝感激。

+0

解除投影?也許你有兩個在彼此頂部的彈出? – jtbandes

+0

jtbandes,你是對的錢!我並沒有真正想到可能會有2個疊加的彈出。我認爲這是某種CALayer問題。當我在presentPopoverFromRect調用中設置一個斷點時,我發現它被調用了兩次。爲什麼?因爲我在工具欄項目上設置了兩次目標/動作。控制器中的createView方法實例化視圖,其init方法設置目標/操作。後來在createView方法中,我再次設置了目標/操作。衛生署!請提交您的回覆,我會將其標記爲答案。謝謝! – djilo

回答

2

另一個觀察結果是,第一次單擊似乎隱藏/關閉彈出窗口的陰影,但不彈出窗口本身。

看來你已經偶然發現了雙彈出式。 ;-)

+0

確實。再次感謝! :) – djilo