2016-11-10 8 views
0

私はGoogle Maps SDKを使用していますが、現在はどこからでも特定の場所にユーザーを誘導するマップがあります。ユーザーが常に同じ場所にルーティングされるのではなく、どこに行きたいかを入力できるようにしたいと考えています。私はGUIにテキストフィールドを追加し、私はシミュレータでアプリケーションを実行し、テキストフィールドをクリックするたびに、キーボードが表示されず、私はそれをタップしなかったかのように動作します。シミュレータでクリックしてもテキストフィールドが機能しない

import UIKit 
import GoogleMaps 
import GooglePlaces 
import CoreData 

class ViewController: UIViewController, CLLocationManagerDelegate, UITextFieldDelegate 
{ 

let locationManager = CLLocationManager() 
    var currLocation: CLLocationCoordinate2D! 
    var keyy = "myKeyIsHere" 
    var didFindMyLocation = false 
    var count: Int = 0 
    var button = UIButton() 
    var latitude = UITextField() 
    var longitude = UITextField() 
    var path = GMSMutablePath() 

super.viewDidLoad() 
     let blah = GMSCameraPosition.camera(withLatitude: 39.8282, longitude: -98.5795, zoom: 25.0) 
     mapView.camera = blah 
     locationManager.delegate = self 
     locationManager.requestWhenInUseAuthorization() 
     mapView.addObserver(self, forKeyPath: "myLocation", options: NSKeyValueObservingOptions.new, context: nil) 

     currLocation = mapView.myLocation?.coordinate 

     button = UIButton(type: .system) 
     button.frame = CGRect(x: 135, y: 40, width: 100, height: 40) 
     button.backgroundColor = UIColor.clear 
     button.layer.cornerRadius = 5 
     button.layer.borderWidth = 1 
     button.layer.borderColor = UIColor.blue.cgColor 
     button.setTitle("Route", for: UIControlState.normal) 
     button.addTarget(self, action: #selector(ViewController.buttonPressed), for: UIControlEvents.touchUpInside) 

     latitude = UITextField() 
     latitude.frame = CGRect(x: 5, y: 90, width: 175, height: 35) 
     latitude.backgroundColor = UIColor.white 
     latitude.layer.cornerRadius = 5 
     latitude.layer.borderWidth = 1 
     latitude.layer.borderColor = UIColor.black.cgColor 
     latitude.isUserInteractionEnabled = true 
     latitude.text = " Enter Latitude" 
     latitude.keyboardType = UIKeyboardType.numbersAndPunctuation 
     self.latitude.delegate = self 

     longitude = UITextField() 
     longitude.frame = CGRect(x: 195, y: 90, width: 175, height: 35) 
     longitude.backgroundColor = UIColor.white 
     longitude.layer.cornerRadius = 5 
     longitude.layer.borderWidth = 1 
     longitude.layer.borderColor = UIColor.black.cgColor 
     longitude.isUserInteractionEnabled = true 
     longitude.text = " Enter Longitude" 
     longitude.keyboardType = UIKeyboardType.numbersAndPunctuation 
     self.longitude.delegate = self 

     self.view.addSubview(latitude) 
     self.view.addSubview(button) 
     self.view.addSubview(longitude) 
    } 

以上ありますが、私が感じるこのすべてが問題に関連しています。ここでは

は、私は私のプロジェクトを設定している方法です。私は実際にはここに2つのテキストフィールドを追加し、どちらも動作しません!助けてください!

+0

種類面白い問題です。シミュレータでテストしていますか? –

+0

iveはシミュレータを使って試してみました。自分の携帯電話も使っていました。 – skyleguy

+0

View ControllerですべてのGUI要素を作成しているので、main.storyboardを完全に削除するだけですか? – skyleguy

答えて

0

Macのキーボードを使用してテキストフィールドに入力することができます。キーボードが表示されるようにするには、シミュレータでcmd + Kを押してソフトウェアキーボードを切り替えます。

キーボードがデバイスに表示されます。

+0

しかし、デバイスやシミュレータに表示されません(キーボードを切り替えた後でも) – skyleguy

+0

View ControllerですべてのGUI要素を作成しているので、main.storyboard完全に? – skyleguy

+0

私はストーリーボードを削除することは問題だと思いません。 textField.text = "デモ" –

0

Control State of your textFieldをストーリーボードまたはプログラムから以下のように有効にする必要があります。

注: textField.Whenを有効にするには、次の方法のいずれかを試してみてください

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

以下のようviewDidLoad?内のすべてのコードを移動を更新しました

enter image description here

latitude.isEnabled = true 
longitude.isEnabled = true 

textField編集開始...

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
    print("textFieldShouldBeginEditing:") 
    return true 
    } 

    func textFieldDidBeginEditing(_ textField: UITextField){ 
    print("textFieldDidBeginEditing:") 
    } 
+0

私は実際にはただ一つのボタンを作っただけで、それは "時間"と呼ばれています。私はその行を追加して、それはまだ動作しません!他のアイデア? – skyleguy

0

あなたのコードにテキストフィールド代理人メソッドを書きましたか?テキストフィールドのキーボードを辞めるコードを書いていれば、textFieldShouldBeging関数をチェックしてください。それ以外の場合は、コーディングでテキストフィールド宣言を書いたとしてもキーボードを表示しない理由はありません。

クラスにすべての要素をプログラムで書き込んだので、要素のいずれかがテキストフィールドをオーバーライドしているかどうかを確認します。だからあなたがテキストフィールドをクリックしていると思っても、あなたは実際に何か他のものをクリックしているのです。

+0

いいえ私はデリゲートメソッドを書いていません!彼らは何ですか? – skyleguy

+0

ここでUIデザインを担当している方法をすべて表示して貼り付けてください。 –

0

すべてのボタンとテキストフィールドの宣言を 'viewDidLoad'メソッドから 'viewDidLayoutSubviews'メソッドに移動してください。自動レイアウトを使用している場合、ボタンとテキストフィールドの宣言をビューに書き込むと、ロードメソッドによって問題が発生する可能性があります。

関連する問題