我使用这个自定义segue。它在iOS8+上运行得很好,但是在ios7上,我得到了这个错误。
2015-10-09 13:59:02.891 APPNAME[1790:60b] -[APPNAME.AFBlurSegue setUseDefaultModalPresentationStyle:]: unrecognized selector sent to instance 0x15ddafe0
2015-10-09 13:59:02.901 APPNAME[1790:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[APPNAME.AFBlurSegue setUseDefaultModalPresentationStyle:]: unrecognized selector sent to instance 0x15ddafe0'
*** First throw call stack:
(0x2e5c6f83 0x38d77ccf 0x2e5ca917 0x2e5c9203 0x2e518768 0x312c0381 0x312b63fb 0x30e19037 0x30e18fd7 0x30e18fb1 0x30e04717 0x30e18a2f 0x30e18701 0x30e136cb 0x30de88cd 0x30de6f77 0x2e59220b 0x2e5916db 0x2e58fecf 0x2e4faebf 0x2e4faca3 0x33400663 0x30e4714d 0x13e65c 0x39284ab7)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
问题是,崩溃是模糊的。我甚至尝试在任何地方设置断点,并试图捕获抛出的任何错误。但是,它仍然没有指出错误可能在哪里。
这看起来像是一个参数/选择器错误,我怀疑这可能是Swift 2错误。我唯一能找到setUseDefaultModalPresentationStyle的引用的地方是这里。
任何帮助都将非常感激!
尝试将storyboard中的Segue设置为Custom,并通过编程方式设置样式:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
UIViewController *destination = segue.destinationViewController;
destination.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
}
这是因为这个库使用UIVisualEffectView
来获得模糊效果。遗憾的是,UIVisualEffectView
仅在iOS 8及以上版本可用。
查看文档获取更多信息。
不幸的是,如果你想使用你的花哨的模糊过渡,你的应用程序不兼容iOS 7及以下版本,这不是什么大问题,因为目前只有10%的设备的iOS低于iOS 8。
更多信息在这里
解决方案:
你可以使用这个库的旧版本来解决这个问题,它还没有使用UIVisualEffectView
,而是使用UIImage+ImageEffects.m
来获得模糊效果。