2014-03-04 64 views
1

我有一個UISplitViewController。在細節面板中,底部有一個UIToolbar。其中一個BarButtonItems通過performSegue方法啓動UIPopoverController。modalInPopover = YES仍然允許Storyboard佈局上的UIToolbar活動

彈出窗口的子視圖控制器在其modalInPopover方法中返回YES。在彈出窗口之外的點擊不會關閉它,但是點擊UIToolbar中的任何酒吧按鈕項目仍會執行該酒吧按鈕項目的功能,即使彈出窗口應該是「模態」的。

如果我爲modalInPopover設置NO,然後單擊任何地方除了酒吧按鈕項目將關閉彈出;但是,點擊條形按鈕項目仍然可以工作,並且彈出窗口仍然可見。

沒有passthru意見集。我無法理解彈出窗口可見時這些酒吧按鈕是如何工作的。任何建議或見解都會受到歡迎。

回答

1

我一直有完全相同的問題,真的我找不到一個乾淨的方式做到這一點。我可以建議的是在你的prepareForSegue:sender:做禁用工具欄的用戶交互使用UIView的這個屬性userInteractionEnabled

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Make sure your segue name in storyboard is the same as this line 
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"]) 
    { 
     // disable user interaction on toolbar here 
     self.navigationController.navigationBar.userInteractionEnabled = NO; 
    } 
} 

我希望這會有所幫助。

+1

耶謝謝。我也在查看userInteractionEnabled。我認爲這可能是一個蘋果錯誤,但我懶得創建一個獨立的案例來驗證和提交。 :) –

+0

@MikeM他們可能會說「這是故意做的,這是一個功能,bla bla」:)) –

+0

這是iOS中的一個明顯的錯誤,即使在iOS 8中也是如此...我建議報告錯誤像我這樣做到蘋果。希望如果有足夠的人報告,他們會解決它。 – jjxtra