代码之家  ›  专栏  ›  技术社区  ›  John Wong

在swift中禁用代理

  •  0
  • John Wong  · 技术社区  · 8 年前

    我当前有一个文本字段,名为 searchTextField . 我还有两个按钮叫做 firstButton secondButton . 当我单击时 第一个按钮 ,我通过添加相关委托在操作方法中启用Google Places API searchTextField.delegate=self .

    但是,我希望单击 第二个按钮 ,Google Places API被禁用,它只是一个普通的文本字段。有没有办法禁用代理或以其他方式实现相同的结果?

    @IBAction func firstAction(_ sender: Any) {
        searchTextField.delegate=self //google autocomplete
    }
    
    @IBAction func secondAction(_ sender: Any) {
        searchTextField.placeholder = "Search without Google API"
    }
    
    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
        let autoCompleteController = GMSAutocompleteViewController()
        autoCompleteController.delegate = self
    
        let filter = GMSAutocompleteFilter()
        filter.type = .establishment
        autoCompleteController.autocompleteFilter = filter
    
        self.present(autoCompleteController, animated: true, completion: nil)
        return false
    }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Fitzgerald Muiseroux    8 年前

    我想我会采取不同的做法

    var googleAPIEnable = false
    func viewDidLoad() {
      searchTextField.delegate = self
    }
    
    @IBAction func firstAction(_ sender: Any) {
      googleAPIEnable = false
    }
    
    @IBAction func secondAction(_ sender: Any) {
      searchTextField.text = nil
      searchTextField.placeholder = "Search without Google API"
      googleAPIEnabled = true
    }
    
    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
      guard googleAPIEnabled else {
        return true
      }
    
      let autoCompleteController = GMSAutocompleteViewController()
      autoCompleteController.delegate = self
    
      let filter = GMSAutocompleteFilter()
      filter.type = .establishment
      autoCompleteController.autocompleteFilter = filter
    
      self.present(autoCompleteController, animated: true, completion: nil)
      return false
    }