2011-08-01 37 views
0

UIPopoverController當我們點擊或觸摸popoverview以外時自動解散。 我想限制這種自動popover解僱。禁用解僱uipopoverview控制器

+3

我已經在下面回答了,但是這實際上是**文檔概述**的第三行。請在發佈SOF問題前至少瀏覽一下文檔。 –

+0

不知道爲什麼這個問題被低估了,我覺得它很有用。 – Nostradamus

回答

8
self.myPopovercontroller.passthroughViews=[NSArray arrayWithObject:self.view]; 
+0

嗨Ravi,我有一個疑問,我認爲你已經知道答案UIPopoverController不會被解僱,當從UINavigationController導航項目打開時,我的導航項目後,過濾器,排序,設置...當我點擊過濾器導航項目popoverView控制器工作正常,但問題是否如果我點擊其他導航項像回來,排序,設置不解僱..當我們點擊或觸摸外部導航欄popover不解除如何糾正這個問題? – Ravindhiran

+0

如果您不希望用戶與下面的視圖進行交互,這不是一個好的解決方案。 –

3

請仔細閱讀UIPopoverController文檔。具體而言...

當顯示時,在彈出窗口之外點擊導致彈出窗口 自動關閉。要允許用戶與指定視圖進行交互並且不關閉彈出窗口,您可以爲passthroughViews屬性分配一個或多個視圖 。彈出式窗口 窗口內的彈出不會自動導致彈出窗口被解除。您的 視圖和視圖控制器代碼必須明確處理 彈出窗口中的操作和事件,並且需要調用dismissPopoverAnimated:方法作爲 。

3

在代表中執行popoverControllerShouldDismissPopover:,並且除非您希望它可以消失,否則您可以阻止它消失。

4

的重複 「is there a way NOT to have the popover dismissed when pressing outside it?

有一個非常簡單的和合法的解決方案。在呈現您的UIPopoverController的視圖控制器中,遵循UIPopoverControllerDelegate協議並實施以下委託方法。我只是測試了這一點,它確實防止popover被解僱。

- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController 
{ 
    return NO; 
} 

只要確保您已將您的彈出窗口控制器的委託設置爲實現此功能的視圖控制器。

您可以使用[popoverController dismissPopoverAnimated:NO];方法解除彈出窗口。

+0

+1 @Sam ...它真的會更好,而不是使用self.myPopovercontroller.passthroughViews = [NSArray arrayWithObject:self.view]; –

相關問題