[英]UIPopover doesn't block UIBarbutton items from being pressed
我正在創建一個具有一些UIBarButton項的應用程序,其中一些項在按下時會啟動UIPopoverController。 我希望此操作禁止任何東西與之交互,這通常是默認情況下發生的。 但是,我注意到,當彈出框處於活動狀態時,同一工具欄中的其他UIBarButtonItem仍將處於活動狀態。 我嘗試添加:
[_popOver setPassthroughViews:nil];
在顯示它之前,但是在顯示彈出窗口時仍可以按下UIBarButtonItems。 我意識到我可以禁用按鈕,但是我寧願不必這樣做,因為當每種彈出窗口打開時,我必須引入各種不必要的狀態。 當在彈出窗口之外選擇任何東西(包括其他UIBarButtonItems)時,有什么方法可以消除彈出窗口?
重現問題的基本代碼:
- (IBAction)rightButtonPressed:(id)sender {
UIViewController *vc = [[UIViewController alloc] init];
_popOver = [[UIPopoverController alloc] initWithContentViewController:vc];
[_popOver setPassthroughViews:nil];
[_popOver presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
- (IBAction)leftButtonPressed:(id)sender {
NSLog(@"Why am I active while pop-over is visible?");
}
將兩個按鈕按鈕項都添加到同一導航欄中。
我是個白痴,在發布了這篇文章之后就想出了解決方法。 似乎對presentPopoverFromBarButtonItem
的調用會自動將導航欄添加到passthroughviews。 由於我在展示UIPopoverView
之前而不是之后進行了UIPopoverView
,因此將其添加回來。 簡單更改呼叫順序即可解決此問題。
- (IBAction)rightButtonPressed:(id)sender {
UIViewController *vc = [[UIViewController alloc] init];
_popOver = [[UIPopoverController alloc] initWithContentViewController:vc];
[_popOver presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
//Call this *AFTER* presenting the popover
[_popOver setPassthroughViews:nil];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.