Swift:在textField中限制字符#而不禁用/干扰其他功能

时间:2015-10-22 19:53:59

标签: swift uitextfield character uitextfielddelegate

我想限制用户可以在textField中使用的字符数。我从这个链接中获取了一个函数:Apple's Download Page(Imanou Petit)

但是,在我的viewDidLoad()中,我有几个textField,我已经引用了委托,因为当用户按下键盘上的Return键时,我希望键盘“返回”。我正在通过textFieldShouldReturn这样做(我也有一个touchesBegan方法,但我希望用户也可以选择Return键):

 func textFieldShouldReturn(textField: UITextField!) -> Bool {


 self.stuffOneTextField.resignFirstResponder()
    self.linkTextField.resignFirstResponder()
    self.descriptionTextField.resignFirstResponder()
    self.ogTextField.resignFirstResponder()
    self.priceTextField.resignFirstResponder()

    return true

}

如果我将以下函数添加到viewDidLoad中,那么键盘上的“Return”键不起作用,它会限制所有textFields(我有5个)。

 override func viewDidLoad() {
    super.viewDidLoad()


    self.stuffOneTextField.delegate = self
    self.linkTextField.delegate = self
    self.descriptionTextField.delegate = self
    self.ogTextField.delegate = self
    self.priceTextField.delegate = self
}

  func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    guard let text = textField.text else { return true }
    let newLength = text.characters.count + string.characters.count - range.length
        return newLength <= limitLength
   }

我只需要限制2个textFields。我已经尝试将特定的textField名称而不是所有textFields作为textField s,然后它限制1个textField并且不允许我输入其他...非常奇怪......

我该如何解决这个问题?

任何帮助都意味着很多。

1 个答案:

答案 0 :(得分:2)

您正在获得正在更改委托功能中的字符的textField。在这里,您可以将其与要限制的特定字段进行比较:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    guard let text = textField.text else { return true }
    if !(textField == stuffOneTextField || textField == descriptionTextField) {
        return true
    }
    let newLength = text.characters.count + string.characters.count - range.length
    return newLength <= limitLength
}

此外,func textFieldShouldReturn(textField: UITextField!) -> Bool正在为您提供一个文本字段,您可以在其上调用resignFirstResponder(),如果这是您想要的话。