在模拟器中单击后,Textfield无法正常工作

时间:2016-11-10 19:47:59

标签: ios swift uitextfield google-maps-sdk-ios

我正在使用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)
    }

还有更多,但我认为这与问题相关。我实际上在这里添加了两个文本字段,但都没有工作!请帮忙!

4 个答案:

答案 0 :(得分:0)

您可以使用macs键盘输入文本字段。如果要显示键盘,请在模拟器中按cmd + K切换软键盘。

键盘将显示在设备上。

答案 1 :(得分:0)

您需要从故事板或编程方式启用以下Control State of your textField

enter image description here

 latitude.isEnabled = true
 longitude.isEnabled = true

<强>更新

注意:将所有代码移到viewDidLoad?内,如下所示

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

尝试使用以下方法之一启用textField。当textField开始编辑...

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

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

答案 2 :(得分:0)

在代码中编写了文本字段委托方法吗?然后检查textFieldShouldBeging函数,如果你写的代码要辞去那个textfield键盘。除此之外,即使您通过编码编写了文本域声明,我也没有看到任何显示键盘的原因。

当您在类中以编程方式编写所有元素时,请检查是否有任何元素覆盖了您的文本字段。这就是为什么即使你认为你点击文本字段,你实际上是在点击别的东西。

答案 3 :(得分:0)

请从&#39; viewDidLoad&#39;移动所有按钮和文本字段声明。方法来查看DidLayoutSubviews&#39;方法。如果您正在使用自动布局,那么在视图中编写按钮和文本字段声明确实加载方法可能会导致问题。