Reputation: 3674
Is there a method to add an url for users looking for additional information? My alert looks like this
let alert = UIAlertController(title: "Alert details", message: "For more detailed information, click the link below", preferredStyle: UIAlertControllerStyle.Alert)
// add url here
let okayAction = UIAlertAction(title: "Ok", style: .Default) { (action) in
print(action)
}
alert.addAction(okayAction)
The idea is to redirect them to a webpage and close the UIAlertController in the app
Upvotes: 4
Views: 7857
Reputation: 11
let alert = UIAlertController(title: "Default Title", message: nil, preferredStyle: .alert)
let textView = UITextView()
textView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
let controller = UIViewController()
textView.frame = controller.view.frame
controller.view.addSubview(textView)
textView.backgroundColor = .clear
alert.setValue(controller, forKey: "contentViewController")
let height: NSLayoutConstraint = NSLayoutConstraint(item: alert.view, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 150)
alert.view.addConstraint(height)
let attributedString = NSMutableAttributedString(string: "http://movies.com")
let url = URL(string: "http://movies.com")
attributedString.setAttributes([.link: url ?? ""], range: NSMakeRange(0, attributedString.length))
textView.attributedText = attributedString
textView.isUserInteractionEnabled = true
textView.isEditable = false
// Set how links should appear: blue and underlined
textView.linkTextAttributes = [
.foregroundColor: UIColor.blue,
.underlineStyle: NSUnderlineStyle.single.rawValue
]
let okAction = UIAlertAction(title: "OK", style: .default) {
UIAlertAction in
}
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) {
UIAlertAction in
}
alert.addAction(okAction)
alert.addAction(cancelAction)
present(alert, animated: true, completion: nil)
from here: https://overcoder.net/q/1502030/кликабельный-url-на-uialertcontroller
Upvotes: 1
Reputation: 535850
You cannot add arbitrary interface to a UIAlertController. The title and message are not tappable. You cannot add further text. Instead, add another button (UIAlertAction) that directs them to the Web page. Either that, or use some other interface instead of a UIAlertController (for example, you can put up a presented view controller that looks like an alert).
Upvotes: 9