pac*_*ero 5 iphone objective-c ios
我正在使用方法openURL:options:completionHandler:,事实证明在iOS 10中工作正常,但我也对我的应用程序感兴趣与旧的iOS 9兼容,但xcode给了我一个
NSException:
-[UIApplication openURL:options:completionHandler:]:
Run Code Online (Sandbox Code Playgroud)
无法识别的选择器发送到实例有什么办法让它在iOS 9中也可以工作吗?感谢可能的回复!
Ann*_*pta 13
新的UIApplication方法openURL:options:completionHandler:,它是异步执行的,并在主队列上调用指定的完成处理程序(此方法替换openURL :)
这是在其他框架更改> UIKit下:https://developer.apple.com/library/prerelease/content/releasenotes/General/WhatsNewIniOS/Articles/iOS10.html
你需要像这样使用它: -
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url)
}
Run Code Online (Sandbox Code Playgroud)
iOS 10 中的新方法:
- (void)openURL:(NSURL*)url options:(NSDictionary<NSString *, id> *)options
completionHandler:(void (^ __nullable)(BOOL success))completion
Run Code Online (Sandbox Code Playgroud)
在这里阅读文档:
新的 UIApplication 方法 openURL:options:completionHandler:,异步执行并调用主队列上指定的完成处理程序(此方法替换 openURL:)。
对于 iOS 10 以下:
[[UIApplication sharedApplication] openURL:URL];//URL is NSURL
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码:
UIApplication *application = [UIApplication sharedApplication];
NSURL *URL = [NSURL URLWithString:strUrl];
if([[UIDevice currentDevice].systemVersion floatValue] >= 10.0){
if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) {
[application openURL:URL options:@{}
completionHandler:^(BOOL success) {
NSLog(@"Open %@: %d",scheme,success);
}];
} else {
BOOL success = [application openURL:URL];
NSLog(@"Open %@: %d",scheme,success);
}
}
else{
bool can = [application canOpenURL:URL];
if(can){
[application openURL:URL];
}
}
Run Code Online (Sandbox Code Playgroud)
LSApplicationQueriesSchemes如果未设置,还需要在 plist 中设置:
喜欢,
<key>LSApplicationQueriesSchemes</key>
<array>
<string>urlscheme1</string>
<string>urlscheme2</string>
</array>
Run Code Online (Sandbox Code Playgroud)
也在这里阅读答案:https : //stackoverflow.com/a/40042291/5575752
| 归档时间: |
|
| 查看次数: |
9597 次 |
| 最近记录: |