簡體   English   中英

當彈出窗口時,UISplitViewController在iOS 8中禁用橫向旋轉的肖像

[英]UISplitViewController portrait to landscape rotation disabled in iOS 8 when popover presented

好的,這是一個奇怪的。

在iOS 8中,如果在縱向中從UISplitViewController中的主面板呈現彈出框,則禁用旋轉。 我經歷了一系列的測試並證實了這種情況。

在UISplitViewController上有一個私有方法,_shouldPreventAutorotation,在旋轉時調用並檢查popover內容控制器上的presentationController屬性。 如果返回非零值,則禁用旋轉。 如果覆蓋該屬性並返回nil,則再次啟用旋轉。

有誰知道為什么在iOS 8中添加了這種行為?

我上傳了這個演示了此行為測試項目在這里

因此,在Hopper中進行了一些調查和反編譯之后,在UISplitViewController上有一個私有方法,當旋轉設備時會調用該方法來確定是否應該禁用旋轉。

如果主面板可見,主面板有一個子模態視圖控制器(在本例中為彈出框),並且呈現的彈出框架的presentationController屬性返回非零值,然后禁用旋轉。

我可以通過覆蓋popover控制器上的-presentationController來覆蓋此行為,並返回nil。 尚不確定任何副作用,但它的工作原理。

- (UIPresentationController *)presentationController {
    return nil;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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