如果一个应用的Minimal Deployment Target
设置为iOS 5.0,如何支持iOS6的功能呢?
例如,如果用户使用的是iOS 5,他将看到一个UIActionSheet
,如果用户使用的是iOS 6,则会看到一个不同的UIActionSheet
。你该如何实现这一点呢?我使用的是Xcode 4.5,想要在iOS 5上运行应用。
如果一个应用的Minimal Deployment Target
设置为iOS 5.0,如何支持iOS6的功能呢?
例如,如果用户使用的是iOS 5,他将看到一个UIActionSheet
,如果用户使用的是iOS 6,则会看到一个不同的UIActionSheet
。你该如何实现这一点呢?我使用的是Xcode 4.5,想要在iOS 5上运行应用。
[self presentModalViewController:viewController animated:YES];
UIViewController
的presentModalViewController:animated:
方法已被弃用,你应该在iOS 6中使用presentViewController:animated:completion:
。但是,你如何知道什么时候使用哪个方法呢?if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
[self presentViewController:viewController animated:YES completion:^{/* done */}];
else
[self presentModalViewController:viewController animated:YES];
if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
[self presentViewController:viewController animated:YES completion:^{/* done */}];
else if([self respondsToSelector:@selector(presentViewController:animated:)])
[self presentModalViewController:viewController animated:YES];
else
NSLog(@"Oooops, what system is this !!! - should never see this !");
UIActionSheet
示例不确定,据我所知,在iOS 5和6上是相同的。也许你在想分享时使用 UIActivityViewController
,如果你在iOS 5上需要回退到 UIActionSheet
,那么你需要检查一个类是否可用,可以参考 这里 的方法。
respondsToSelector
的方法?或者每次都需要这样做吗? - user2568508respondsToSelector:
会检查接收者上传递给它的方法是否可用。因此,通常您会在要调用的方法上调用此方法。有时,您会调用多个属于同一iOS版本/规范的方法,因此检查一个方法就可以假定其他方法也可用。 - Daniel