如何在 UIAlertController 中提供超链接操作?
Posted
技术标签:
【中文标题】如何在 UIAlertController 中提供超链接操作?【英文标题】:How to give hyperlink action in UIAlertController? 【发布时间】:2020-02-14 08:13:44 【问题描述】:我无法单击 UIAlertController 中的超链接。我想在点击超链接时打开外部浏览器。
-(void)viewDidAppear:(BOOL) animated
NSString *htmlString = @"Welcom to AlertView for more information <A href=\"https://www.google.com\"> Click Here </A>";
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@""
message:htmlString
preferredStyle:UIAlertControllerStyleAlert];
NSAttributedString *attributedStr = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding]
options:@NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)
documentAttributes:nil error:nil];
UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action)
// OK button tappped.
[self dismissViewControllerAnimated:YES completion:^ ];
];
[alert setValue:attributedStr forKey: @"attributedMessage"];
[alert addAction:defaultAction];
[self presentViewController:alert animated:true completion:nil];
点击“点击这里”然后应该打开外部浏览器。是否可以在 UIAlertView 中获得超链接点击动作?
【问题讨论】:
这能回答你的问题吗? Swift UIAlertController with url in text 【参考方案1】:我认为这是可能的,但我认为 Apple 指南不建议这样做。 相反,您应该将标题设置为“欢迎使用此 AlertView,有关更多信息,请查看我们的网站”,例如使用两个按钮“确定”和“不,谢谢”。 用户过去常常单击本机按钮而不是警报控制器中的文本。希望对您有所帮助。
【讨论】:
【参考方案2】:我认为添加一个默认操作按钮会更好,可能标题为“更多信息”,这将负责打开网址,但您可以看看这个same question。
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"" message:@"Welcome to AlertView" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *linkAction = [UIAlertAction actionWithTitle:@"More info" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action)
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: yourUrl]];
];
UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action)
// OK button tappped.
[self dismissViewControllerAnimated:YES completion:^ ];
];
[alert addAction:linkAction];
[alert addAction:defaultAction];
[self presentViewController:alert animated:true completion:nil];
【讨论】:
不知道为什么有人不赞成这个答案。这是让“更多信息”处于警报状态但仍遵循 Apple 指南的好方法。 @trungduc:答案与我的问题无关。添加更多信息选项可以轻松完成。这是基本的。 @Yalamandarao 如果是这种情况,您应该发表评论让他知道。对于您的问题,这是有可能的,但由于修改系统组件,您的应用程序很有可能会被拒绝。另一种方法是创建一个看起来与系统警报完全相同的组件。这需要一段时间。 @Yalamandarao 正如我所说,看看我在回答中发布的link,他们试图实现与您相同的目标,因此您在这里有两个选项 .以上是关于如何在 UIAlertController 中提供超链接操作?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中旋转 UIAlertController
如何在 UIAlertController 中添加 UIPickerView?
如何在 iOS 中处理多个 UIAlertController?
在 Swift 中点击返回键时如何关闭 UIAlertController?