在 swift 中禁用代表
Disabling delegates in swift
我目前有一个名为 searchTextField
的文本字段。我还有两个按钮 firstButton
和 secondButton
。当我单击 firstButton
时,我通过添加相关委托 searchTextField.delegate=self
.
在操作方法中启用 Google Places API
但是,我希望当我单击 secondButton
时,Google 地方 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
}
我想我会采取不同的做法
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
}
我目前有一个名为 searchTextField
的文本字段。我还有两个按钮 firstButton
和 secondButton
。当我单击 firstButton
时,我通过添加相关委托 searchTextField.delegate=self
.
但是,我希望当我单击 secondButton
时,Google 地方 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
}
我想我会采取不同的做法
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
}