如何在 Swift 中的一个特定 UITextField 上应用 textFieldShouldBeginEditing

How to apply textFieldShouldBeginEditing on one specific UITextField in Swift

我有地址、城市、州和邮编四个文本字段。我只需要为状态字段调用选择器视图,所以我只需要在状态文本字段上隐藏键盘。我正在尝试使用这段代码在 textFieldShouldBeginEditing 函数中执行此操作,但它将它应用于所有文本字段。

func textFieldShouldBeginEditing(state: UITextField) -> Bool {
 return false
}

我还将这段代码应用到所有文本字段,因此键盘将隐藏在 return

func textFieldShouldReturn(textField: UITextField!) -> Bool {
    self.view.endEditing(true)
    return false
}

所以我所有的文本字段都在 viewDidLoad 中

    address.delegate = self
    city.delegate = self
    zip.delegate = self
    state.delegate = self

我希望这足够具体。感谢您的帮助!

首先,通过这样做

func textFieldShouldBeginEditing(state: UITextField) -> Bool {
 return false
}

您不是 "selecting" 文本字段,您只是在命名该变量。

您应该做的是将该变量与您的属性进行比较,并据此采取行动。

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
 if(textField == self.state)
  return false
 return true;
}

PS。 addresscity等都不是很好的变量名。当然,您知道它们是什么,但如果其他人正在查看代码,则不会很明显,我建议使用 addressTextField 甚至 addressField 之类的名称。

在委托回调中,您可以使用文本字段验证 'textField'。 例如:

func textFieldShouldReturn(textField: UITextField!) -> Bool {
    if textField == address {
       self.view.endEditing(true)
       return false
    }
    ...
}