簡體   English   中英

UIPopover不會阻止UIBarbutton項被按下

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM