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

时间:2015-03-31 22:52:01

标签: ios swift uitextfield

我有四个用于地址,城市,州和邮政的文本字段。我只需要为状态字段调用Picker View,所以我只需要在状态文本字段中隐藏键盘。我尝试使用这段代码在textFieldShouldBeginEditing函数中执行此操作,但它将其应用于所有文本字段。

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

我也将这段代码应用于所有文本字段,以便键盘在返回时隐藏

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

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

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

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

2 个答案:

答案 0 :(得分:3)

首先,通过这样做

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

你没有“选择”textField,你只是命名那个变量。

您应该做的是将该变量与您的属性进行比较,并根据具体情况采取行动。

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

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

答案 1 :(得分:2)

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

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