🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Q&A

解決済

1回答

555閲覧

mapViewの前面にキーボードを表示したい

takk_014

総合スコア53

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

0グッド

0クリップ

投稿2021/03/26 05:11

編集2021/03/26 08:49

mapViewの上に入力ボックスを置いています。
その入力ボックスをタップした時にキーボードを表示させたいです。
しかしmapViewに隠されてしまって表示されません。(mapViewを描画しなければキーボードが出ることを確認しました)
loadViewでViewにmapViewを入れ、viewWillAppearでViewに入力ボックスを入れてます。
入力ボックスをコードで描画してもstoryboardで描画しても結果は同じでした。
キーボードのインスタンスを取得して描画順序を変えるのではないかと思いましたが、マニアックな内容になるためか私が調べてもやり方が分かりませんでした...
self.view.sendSubviewToBack(View)を使ってmapViewを最背面に移動させてもキーボードは表示できませんでした。

メインコードはこちら(文字数制限があるため肝心なとこだけ)

swift

1 2import UIKit 3import GoogleMaps 4 5class ViewController: UIViewController, GMSMapViewDelegate, CLLocationManagerDelegate, UITextFieldDelegate{ 6 7 var mapView: GMSMapView! 8 var direction: Direction! 9 var coordinates: [CLLocationCoordinate2D] = [] 10 var routeAddMode: Bool = false 11 var routeColor: [UIColor] = [.darkGray,.red,.blue,.green,.cyan,.yellow,.brown,.magenta,.orange,.purple] 12 var myLatitude = 34.971698 13 var myLongitude = 138.3890637 14 var locationManager = CLLocationManager() 15 var markerArray = [GMSMarker]() 16 17 // UIButtonのインスタンスを作成する 18 let addButton = UIButton(type: UIButton.ButtonType.system) 19 let currentLocationButton = UIButton(type: UIButton.ButtonType.system) 20 let resetButton = UIButton(type: UIButton.ButtonType.system) 21 let allResetButton = UIButton(type: UIButton.ButtonType.system) 22 // UITextFieldを生成 23 let textField = UITextField() 24 //CLGeocoderインスタンスを取得 25 let geocoder = CLGeocoder() 26 27 //Viewにマップのインスタンスを入れたりなどの諸々の処理 28 override func loadView() { 29 super.loadView() 30 navigationController?.isNavigationBarHidden = true 31 //カメラがマップを表示する位置(デフォルトして静岡駅を設定) 32 let camera = GMSCameraPosition.camera(withLatitude:34.971698,longitude:138.3890637,zoom:13.0) 33 //位置情報取得ONに 34 self.mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 35 self.mapView.isMyLocationEnabled = true 36 self.mapView.delegate = self 37 self.view = self.mapView 38 // User Location 39 locationManager.delegate = self 40 locationManager.requestWhenInUseAuthorization() 41 locationManager.desiredAccuracy = kCLLocationAccuracyBest 42 locationManager.startUpdatingLocation() 43 } 44 //入力ボックスやボタンのデザイン設定と描画 45 override func viewWillAppear(_ animated: Bool) { 46 super.viewWillAppear(animated) 47 //検索ボックスの位置や大きさ 48 self.textField.frame = CGRect(x: self.view.frame.minX + 100, 49 y: self.view.frame.minY + 50, 50 width: self.view.frame.width - 200, 51 height: 40) 52 // プレースホルダを設定 53 textField.placeholder = "住所、郵便番号などを入力" 54 // キーボードタイプを指定 55 textField.keyboardType = .default 56 // 枠線のスタイルを設定 57 textField.borderStyle = .roundedRect 58 // 改行ボタンの種類を設定 59 textField.returnKeyType = .done 60 // テキストを全消去するボタンを表示 61 textField.clearButtonMode = .always 62 // UITextFieldを追加 63 self.view.addSubview(textField) 64 // デリゲートを指定 65 textField.delegate = self 66 //Viewに追加 67 self.view.addSubview(self.textField)

イメージ説明
※実機でもキーボードが出ないです

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

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

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

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

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

guest

回答1

0

自己解決

self.mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

let mapRect = CGRect(x:0, y:0, width: self.view.bounds.width, height: self.view.bounds.height)
self.mapView = GMSMapView.map(withFrame: mapRect, camera: camera)

にして

self.view = self.mapView

self.view.addSubview(self.mapView)

とすることでキーボードが表示できました

投稿2021/03/26 09:06

takk_014

総合スコア53

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問