2014-09-29 121 views
4

我在最終視圖控制器(portait)上呈現圖像,在屏幕上顯示所有內容,如果我打開設備環境,然後landscaperight,它仍然可以;_viewControllerForSupportedInterfaceOrientationsWithDismissCheck無法識別的選擇器

如果我然後使用SLComposeViewController(用於Twitter發佈)一旦我駁回(取消或發佈的東西),然後旋轉手機風景,應用程序崩潰,出現以下錯誤;

*終止應用程序由於未捕獲的異常 'NSInvalidArgumentException' 的,理由是: ' - [_ UIAppearanceCustomizableClassInfo _viewControllerForSupportedInterfaceOrientationsWithDismissCheck:]:無法識別的選擇發送到實例0x1b9eefd0'

雖然我不使用風景模式下,當我將其轉向橫向時,應用程序確實會轉向,但這不是主要問題,問題在於應用程序崩潰。

雖然我知道如果用戶在發佈到Twitter之後沒有打開手機,這並不理想,而且我寧願修復,因爲我確信您同意。

關於方向支持,AppDelegate.m有這個;

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{ 
    return UIInterfaceOrientationMaskLandscape|UIInterfaceOrientationMaskPortrait |UIInterfaceOrientationMaskPortraitUpsideDown; 
} 

而且崩潰的控制器有這個;

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    NSString *viewControllerClassName = [NSString stringWithUTF8String:object_getClassName(window.rootViewController)]; 
    if ([viewControllerClassName isEqualToString:@"_UIAlertShimPresentingViewController"]) { 
     return UIInterfaceOrientationMaskPortrait; 
    } 
    else { 
     return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; 
    } 
} 

-(BOOL)shouldAutorotate{ 
    return NO; 
} 
+0

我有類似的異常:***終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: ' - [NSConcreteValue _viewControllerForSupportedInterfaceOrientationsWithDismissCheck:]:無法識別的選擇發送到實例0x17e40260' ..(( – gmlvsv 2014-09-30 13:56:19

回答

2

我在iOS8上看到類似的問題,應用程序崩潰後,模式視圖控制器被解僱,電話隨後旋轉。

在我的情況下,模態視圖控制器是從actionSheet中的操作表中呈現的:clickedButtonAtIndex:方法。我發現的解決方法是將呈現模式視圖控制器的代碼移出該方法,並將其異步調用,即[self performSelector:@selector(presentModalViewController) withObject:nil afterDelay:1.0];

不確定爲什麼會有所作爲,但它確實讓操作工作表在顯示模態視圖控制器之前進行動畫顯示,這可能會產生一些影響。

+0

丹尼爾嗨,有趣.. 。我發現使用TWTweetComposer的臨時解決方法,我知道它已經過時了,但奇怪的是,它在使用時沒有崩潰,但在使用SLComposeViewController時崩潰了 - 奇怪,因爲後者是Apple框架! – user3355723 2014-10-02 09:27:43

+0

在同一個應用程序中,我使用SLComposeViewController時沒有問題(甚至是從一個操作表中提供)。 – danielquokka 2014-10-03 03:06:09

+0

我只注意到你的視圖控制器的方法簽名是' - (NSUInteger)應用程序:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window'。應該是簡單的' - (NSUInteger)supportedInterfaceOrientations'我認爲。不管這會不會導致你報告的問題,我會很懷疑,但看起來像是根源,這是一個iOS8的錯誤,很難知道。 – danielquokka 2014-10-03 03:12:59

4

當您從UIActionSheet展示模態視圖控制器並且您駁回了模態視圖控制器並旋轉屏幕時,我也在iOS 8中看到類似的崩潰。我覺得它不得不提出模態視圖控制器。上述修復延遲模式視圖控制器的演示文稿絕對有效,

而不是從actionSheet調用現有的模態視圖控制器:clickedButtonAtIndex:UIActionSheet的委託方法,從「actionSheet didDismissWithButtonIndex:」調用,併爲我工作。

+0

也適用於我..太棒了+1 – pankaj 2014-10-14 06:53:57

+0

也適合我... – Deepak 2014-11-06 09:47:39

相關問題