2014-09-29 149 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

相关问题