Answers:
这是我所做的:
我在.h头文件中创建了IBAction,如下所示:
- (IBAction)openDaleDietrichDotCom:(id)sender;
我在“设置”页面上添加了一个UIButton,其中包含要链接的文本。
我将按钮适当地连接到文件所有者中的IBAction。
然后执行以下操作:
物镜
- (IBAction)openDaleDietrichDotCom:(id)sender {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.daledietrich.com"]];
}
迅速
(viewController中的IBAction,而不是头文件)
if let link = URL(string: "https://yoursite.com") {
UIApplication.shared.open(link)
}
Swift语法:
UIApplication.sharedApplication().openURL(NSURL(string:"http://www.reddit.com/")!)
适用于iOS 9.3和更早版本的新Swift语法
从某些新版本的Swift(可能是swift 2?)开始,UIApplication.sharedApplication()现在变成了UIApplication.shared(更好地利用了我猜测的计算属性)。另外,URL不再可以隐式转换为NSURL,必须使用as显式转换!
UIApplication.sharedApplication.openURL(NSURL(string:"http://www.reddit.com/") as! URL)
自iOS 10.0起的新Swift语法
不推荐使用openURL方法,并由功能更广泛的方法取代,该方法从iOS 10.0起采用了options对象和异步完成处理程序
UIApplication.shared.open(NSURL(string:"http://www.reddit.com/")! as URL)
openURL(_:)
在iOS 10.0中已弃用,而是应open(_:options:completionHandler:)
在UIApplication上调用实例方法。
if let url = NSURL(string:"http://www.reddit.com/") { UIApplication.shared.open(url) }
将永远为您服务。可能要assert
和else
语句中的错误捕捉错别字。
在这里,需要检查一下要打开的URL是否能够由设备或模拟器打开。因为有时(在模拟器中占大多数),我发现它会导致崩溃。
物镜
NSURL *url = [NSURL URLWithString:@"some url"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
雨燕2.0
let url : NSURL = NSURL(string: "some url")!
if UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.sharedApplication().openURL(url)
}
斯威夫特4.2
guard let url = URL(string: "some url") else {
return
}
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
canOpenURL
。我不明白您为什么不直接打电话openURL:url
,如果失败了,请处理失败。canOpenURL
主要用于在不离开当前应用程序的情况下检测应用程序的安装。
openURL(_:)
在iOS 10.0中已弃用,而是应open(_:options:completionHandler:)
在UIApplication上调用实例方法。
看一下-openURL:
UIApplication 上的方法。它应该允许您将NSURL实例传递给系统,该实例将确定在哪个应用程序中打开它并启动该应用程序。(请记住,您可能-canOpenURL:
要先检查一下,以防万一URL无法被系统上当前安装的应用程序处理-尽管对于普通http://
链接而言这可能不是问题。)
openURL(_:)
在iOS 10.0中已弃用,而是应open(_:options:completionHandler:)
在UIApplication上调用实例方法。
并且,如果您不确定所提供的URL text
是否具有方案:
NSString* text = @"www.apple.com";
NSURL* url = [[NSURL alloc] initWithString:text];
if (url.scheme.length == 0)
{
text = [@"http://" stringByAppendingString:text];
url = [[NSURL alloc] initWithString:text];
}
[[UIApplication sharedApplication] openURL:url];
text
此处)不会被硬编码,因此您需要这样的代码。
由于自iOS 10.0起不赞成使用此答案,因此更好的答案是:
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}else{
UIApplication.shared.openURL(url)
}
是Objective-c
[[UIApplication sharedApplication] openURL:@"url string" options:@{} completionHandler:^(BOOL success) {
if (success) {
NSLog(@"Opened url");
}
}];
在iOS 10.0中不建议使用openURL(:),而应在UIApplication上使用以下实例方法:open(:options:completionHandler :)
使用Swift的示例
这将在Safari中打开“ https://apple.com ”。
if let url = URL(string: "https://apple.com") {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
https://developer.apple.com/reference/uikit/uiapplication/1648685-open
斯威夫特5:
func open(scheme: String) {
if let url = URL(string: scheme) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:],
completionHandler: {
(success) in
print("Open \(scheme): \(success)")
})
} else {
let success = UIApplication.shared.openURL(url)
print("Open \(scheme): \(success)")
}
}
}
用法:
open(scheme: "http://www.bing.com")
参考:
试试这个:
NSString *URL = @"xyz.com";
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:URL]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:URL]];
}
在Swift 1.2中,请尝试以下操作:
let pth = "http://www.google.com"
if let url = NSURL(string: pth){
UIApplication.sharedApplication().openURL(url)