我想在 SwiftUI 文本(或任何视图)中显示电话号码,然后使其可点击,以便打开“电话”。
有没有办法用 SwiftUI 来做到这一点,或者我应该尝试在 SwiftUI 中包装一个 UITextView 并用 NSAttributed 字符串等老式的方式来做?
我已阅读 SwiftUI 中的 Text 文档,但找不到有关如何执行此操作的任何信息。目前正在尝试在 Xcode 11 beta 5 中执行此操作。
我在 SwiftUI.h 的 SwiftUI API 中搜索了“文本”
我还搜索过 stackoverflow [swiftui] 和 google,其中包括“使电话号码/网址可点击”、“可点击链接/网址 swiftUI”等查询。
Text("123-456-7890")
.onTapGesture {
// do something here
}
Run Code Online (Sandbox Code Playgroud)
(文本将是日本电话号码)
小智 18
使用 iOS 14 / Xcode 12.0 beta 5
将 SwiftUI 中的新链接功能用于电话和电子邮件链接。
// Link that will open Safari on iOS devices
Link("Apple", destination: URL(string: "https://www.apple.com")!)
// Clickable telphone number
Link("(800)555-1212", destination: URL(string: "tel:8005551212")!)
// Clickable Email Address
Link("apple@me.com", destination: URL(string: "mailto:apple@me.com")!)
Run Code Online (Sandbox Code Playgroud)
Ash*_*ish 11
尝试这个,
let strNumber = "123-456-7890"
Button(action: {
let tel = "tel://"
let formattedString = tel + strNumber
guard let url = URL(string: formattedString) else { return }
UIApplication.shared.open(url)
}) {
Text("123-456-7890")
}
Run Code Online (Sandbox Code Playgroud)
nSq*_*uid 10
感谢 Ashish 的回答,我找到了解决这个问题所需的必要代码:
在按钮内部的操作中 - 您需要调用此方法:
UIApplication.shared.open(url)
Run Code Online (Sandbox Code Playgroud)
实际拨打电话/在 SwiftUI 视图中打开链接。
当然,一开始我不明白如何格式化我的电话号码,我在这些答案中找到了:
不要忘记将“tel://”添加到字符串的开头/将其格式化为 URL..
工作的完整代码是
Button(action: {
// validation of phone number not included
let dash = CharacterSet(charactersIn: "-")
let cleanString =
hotel.phoneNumber!.trimmingCharacters(in: dash)
let tel = "tel://"
var formattedString = tel + cleanString
let url: NSURL = URL(string: formattedString)! as NSURL
UIApplication.shared.open(url as URL)
}) {
Text(verbatim: hotel.phoneNumber!)
}
Run Code Online (Sandbox Code Playgroud)
吻 回复:
Button("url") {UIApplication.shared.open(URL(string: "https://google.com")!)}
Run Code Online (Sandbox Code Playgroud)
从 iOS 14 开始,Apple 默认为我们提供了一个链接视图。所以,你可以用这个,
Link("Anyone can learn Swift", destination: URL(string: "https://ohmyswift.com")!)
Run Code Online (Sandbox Code Playgroud)
对于之前的 iOS 版本,比如 iOS 13.0,你还是要使用
Button("Anyone can learn Swift") {
UIApplication.shared.open(URL(string: "https://ohmyswift.com")!)
}
Run Code Online (Sandbox Code Playgroud)
利用 SwiftUI 中支持链接的 Markdown!
struct ContentView: View {
var body: some View {
Text("Call [123-456-7890](tel:1234567890)")
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
归档时间: |
|
查看次数: |
12267 次 |
最近记录: |