斯威夫特:限制字符#在文本框没有禁用/与其它功能

问题描述:

我想限制一个用户可以在文本字段使用的字符数干扰。我从这个链接中获取了一个函数:Max length UITextField(Imanou Petit)斯威夫特:限制字符#在文本框没有禁用/与其它功能

但是,在我的viewDidLoad()中我有几个textField,我已经引用委托,因为我想让键盘在用户按下“Return” 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中添加,那么键盘上的'返回'键不起作用,它限制了所有的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名称,而不是所有的文本字段作为textField s,然后限制1个textField,并且不让我输入其他字符...很奇怪...

我该如何去这个吗?

任何帮助意味着很多。

你报错,说是在委托函数变化字符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(),如果这是你想在那里做什么。

+0

感谢您的回复。我在哪里指定我想限制角色的时间?被newLength常量所困惑,什么被返回......这个方法被放置在哪里?在另一种方法? @Don – lukaivicev

+0

我已经更新了答案表明,这将是在FUNC文本框的主体(文本框:的UITextField,shouldChangeCharactersInRange范围:NSRange,replacementString字符串:字符串)功能。返回的内容是一个布尔值,表示输入的字符串是否在您的大小限制limitLength之下。正如你在上面提到的问题的答案中一样,'limitLength'是你班上定义的常数。 – Don

+0

美丽。非常感谢。 – lukaivicev