2011-07-12 86 views
6

我正在顯示包含視圖控制器具有modalInView屬性集的彈出窗口。我需要用戶在繼續之前輸入迴應。如何使用modalInPopover顯示彈出窗口時禁用主工具欄?

雖然這會禁用我的大部分用戶界面控件,但它會禁用主應用程序上的工具欄按鈕。我不希望用戶在彈出窗口中選擇一個項目並關閉它之前與應用程序進行交互。

我在這裏錯過了一些聰明的東西 - 例如,這會默認禁用工具欄?爲什麼它保持活躍?是否有一些需要它的用戶界面指南?

我應該只是設置工具欄來禁止用戶交互,或者是那麼混亂?

回答

1

我找到工作最好的是,你提什麼的可能性在你的問題:

-(void)showMyPopover 
{ 
    .... 
    self.myToolBar.userInteractionEnabled=NO; 
    [self.myPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES] 
} 

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController 
{ 
    self.myToolBar.userInteractionEnabled=YES; 
    ... 
} 
6

好像iOS版增加了酒吧作爲「直通觀」爲酥料餅的,當你從的UIBarButtonItem出示。

正好被設置爲UIPopoverController的零passthroughViews財產提出它,這樣以後:

[self.myPopover presentPopoverFromBarButtonItem:some_item permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
dispatch_async(dispatch_get_main_queue(), ^{ self.myPopover.passthroughViews = nil; }); 
+0

謝謝!它救了我:) – mohamede1945

+0

生命,當然。我甚至無法想象爲什麼蘋果會默認這樣做,因爲無論何時再次點擊酒吧按鈕項目,都會導致崩潰。 – MusiGenesis

+0

在iOS8上,您需要在另一個runloop中設置passthroughViews才能使其運行。更多信息[here](http://blog.karmeye.com/2014/11/20/ios8-popovers-and-passthroughviews/)。 – Karmeye

2

使用-[UIPopoverController presentPopoverFromRect:inView:permittedArrowDirections:animated]相反,它默認不啓用的工具欄交互。例如,如果從具有customView屬性集的UIBarButtonItem呈現:

[barButtonItem presentPopoverFromRect:barButtonItem.customView.bounds inView:barButtonItem.customView permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];` 
相關問題