質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

623閲覧

Xcodeのswiftによる地図アプリで、リンク先のwebサイトにジャンプしたいその2

satoshi2019

総合スコア13

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2019/09/01 05:11

以前質問させていただいた者ですが、依然行き詰まっているのでご相談です。

xcodeで地図アプリを作っています。
Mapkitでピンを表示して、title、subtitleを表示することはできました。
このtitleかsubtitleの文字にリンクを貼って
タッチしたらそのままリンク先のにジャンプしたい。

swift ソースコード import UIKit import MapKit import CoreLocation class ViewController: UIViewController, CLLocationManagerDelegate { @IBOutlet weak var MapView: MKMapView! var myLocationManager:CLLocationManager! override func viewDidLoad() { super.viewDidLoad() myLocationManager = CLLocationManager() //位置情報使用許可のリクエストを表示するメソッドの呼び出し myLocationManager.requestWhenInUseAuthorization() //位置情報取得に失敗したときに呼び出されるメソッド func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("error") } //中心座標 let center = CLLocationCoordinate2DMake(34.992541, 135.757813) //表示範囲 let span = MKCoordinateSpan(latitudeDelta: 0.2, longitudeDelta: 0.2) //中心座標と表示範囲をマップに登録する。 let region = MKCoordinateRegion(center: center, span: span) MapView.setRegion(region, animated:true) //中心にピンを立てる。 let annotation = MKPointAnnotation() annotation.coordinate = CLLocationCoordinate2DMake(35.027962, 135.751191) annotation.title = "お店" annotation.subtitle = "お店の説明" MapView.addAnnotation(annotation) } } ↑で自分の位置情報、店の場所にピンタがたつ、ピンをタップすると説明が表示される、まではできました。 次にタイトルかサブタイトルからリンク先にジャンプする手続きをしようと思っています。 今、色々と調べながら 1 WebKitをインポート ![イメージ説明](39f0076a70fa1ee8c2199d414b754398.png) 2 swift fileでDetailViewController fileを作成しDetailViewController : UIViewControllerクラスを作成 ![イメージ説明](ca0b25c03aa7e1f041e65071c275bbfc.png) 3 Navigation Controllerを作成 4 main storyboardでViewControllerを作成 ![イメージ説明](42a92a742b0c5150741e759d773666ed.png) までやりました。 ViewControllerでwebを表示する方法と、リンク先からジャンプしたURLをViewControllerに表示する方法がわかりません。 ぜひよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

以前も答えたと思いますが、
簡単なのは、コードの流れとして、
吹き出しをクリックしたら、viewの遷移
遷移先にurlを渡す
urlをもとにwebKitでページを表示です。

吹き出しのクリックを検出は下記
リンク内容

Web pageの表示は下記などを
リンク内容

参考にすればできると思います。

なお、UILabel自体を
・ハイパーリンク化したい(クリックできるようにしたい)場合でも、
WKWebViewでの表示が必要になるため、画面の遷移は必要です。

同じviewに両方を置いて、alphaを0.0に切り替えるとか
高さを0にするでも切り替えられますけど、
viewがゴチャゴチャになりやすいと思いますので、オススメしません。

UILabel自体をクリックできるようにするには
UILabelにUITapGestureRecognizerを設定しないといけないです。
Apple純正のAnnotationViewでできるかはちょっとやってみないとわかりませんが
custom MKAnnotationViewを用意しないといけないかもしれません。
いずれにしても手順が複雑になります。

なので、吹き出しクリックがオススメですが、
2箇所別のとこに遷移したいなど分けなければいけない場合は、
複雑な手順で実装しなければいけないですね。

なぜUILabelがハイパーリンク化できないかは下記を参照。
UITapGestureRecognizerへのリンクも付いていますよ。
リンク内容

投稿2019/09/01 12:28

編集2019/09/01 13:10
hameji

総合スコア1380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

satoshi2019

2019/09/01 22:11

ありがとうございます。教えていただいたことを試してみます。ベストアンサーにするには少し時間をいただきたいです。 また、行き詰まればもう少し質問をさせていただきたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問