Подключение адреса (UITextView) к Apple Maps - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь реализовать какую-то функцию:

Мне нужен UITextView, который является адресом какого-то места, приводит пользователя к Apple Maps при нажатии на этот UITextView и отображает местоположение адрес в UITextView. Любые идеи о том, как я могу это сделать?

То, что я пытался сделать до сих пор:

import MapKit

@IBOutlet weak var firstAddressTapped: UITextView!

func viewDidLoad() {
  let attributedString = NSMutableAttributedString(string: "The address of my place")
  attributedString.addAttribute(.link, value: "http://maps.apple.com/?daddr=The+address+of+my+place", range: NSRange(location: 19, length: 55))
     firstAddressTapped.attributedText = attributedString
 }

func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
   UIApplication.shared.open(URL)
     return false
}

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Отличный простой урок Александра Адельмаера по Medium помог мне решить мою проблему! Наслаждаться.

https://medium.com/app-makers/how-to-add-a-tap-gesture-to-uilabel-in-xcode-swift-7ada58f1664

Что я сделал неправильно:

Попытка реализовать функцию в неправильном файле, когда я должен был добавить его просмотреть контроллер.

Как я решил:

 override func viewDidLoad() {
        super.viewDidLoad()
 self.setupLabelTap()
   }
}

 @objc func labelTapped(_ sender: UITapGestureRecognizer) {
                if let url = URL(string: "http://maps.apple.com/?address=My+Address") {
                    UIApplication.shared.open(url)
        }
        print("The label is tapped!")
    }


func setupLabelTap() {

        let labelTap = UITapGestureRecognizer(target: self, action: #selector(self.labelTapped(_:)))
        self.myView.labelAddress.isUserInteractionEnabled = true
        self.myView.labelAddress.addGestureRecognizer(labelTap)
    }

Более того, вам определенно не нужен MapKIT, чтобы использовать UITapRecognizer для открытия Apple Maps.

0 голосов
/ 06 февраля 2020

Вы можете передать адрес так:

func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
   UIApplication.shared.open(URL)
   // check if user touched the link.
   if range == NSRange(location: 19, length: 55) {
        UIApplication.sharedApplication().openURL(NSURL(string: "http://maps.apple.com/?address=The+address+of+my+place")!)
   }
   return false
}
...