728x90
728x90
Button("tel") {
let telephone = "tel://" + numberString
guard let url = URL(string: telephone) else { return }
UIApplication.shared.open(url)
}
URL 앞에 "tel://"을 붙이면 전화번호로 인식하게 된다. 이를 URL로 변환 후, UIApplication에서 open해주면 전화로 연결할 수 있게 된다.
Button("email") {
let emailAddr = "mailto:" + numberString
guard let url = URL(string: emailAddr) else { return }
UIApplication.shared.open(url)
}
이와 똑같이 메일은 앞에 "mailto:"을 붙여주고 위와 같은 방식으로 open해주면 이메일로 연결할 수 있다.
또한, 전화번호를 평소 표현하는 방식대로 010-XXXX-XXXX와 같이 표현하기 위해서는 아래 코드를 작성한 후
extension String {
func prettyPhoneNumber() -> String {
let _str = self.replacingOccurrences(of: "-", with: "")
let arr = Array(_str)
if arr.count > 3 {
let prefix = String(format: "%@%@%@", String(arr[0]), String(arr[1]), String(arr[2]))
if prefix == "02" {
if let regex = try? NSRegularExpression(pattern: "([0-9]{2})([0-9]{3,4})([0-9]{4})", options: .caseInsensitive) {
let modString = regex.stringByReplacingMatches(in: _str, options: [],
range: NSRange(_str.startIndex..., in: _str),
withTemplate: "$1-$2-$3")
return modString
}
} else if prefix == "15" || prefix == "16" || prefix == "18" {
if let regex = try? NSRegularExpression(pattern: "([0-9]{4})([0-9]{4})", options: .caseInsensitive) {
let modString = regex.stringByReplacingMatches(in: _str, options: [],
range: NSRange(_str.startIndex..., in: _str),
withTemplate: "$1-$2")
return modString
}
} else if prefix.hasPrefix("05") {
// Handle 050X numbers
if let regex = try? NSRegularExpression(pattern: "([0-9]{3})([0-9]{4})([0-9]{4})", options: .caseInsensitive) {
let modString = regex.stringByReplacingMatches(in: _str, options: [],
range: NSRange(_str.startIndex..., in: _str),
withTemplate: "$1-$2-$3")
return modString
}
} else {
if let regex = try? NSRegularExpression(pattern: "([0-9]{3})([0-9]{3,4})([0-9]{4})", options: .caseInsensitive) {
let modString = regex.stringByReplacingMatches(in: _str, options: [],
range: NSRange(_str.startIndex..., in: _str),
withTemplate: "$1-$2-$3")
return modString
}
}
}
return self
}
}
아래와 같이 String 변수의 method로 호출해주면 된다.
// 01012345678 -> 010-1234-5678
Text(phoneNumber.prettyPhoneNumber())
728x90
728x90