斯威夫特:限制字符#在文本框没有禁用/与其它功能
问题描述:
我想限制一个用户可以在文本字段使用的字符数干扰。我从这个链接中获取了一个函数: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()
,如果这是你想在那里做什么。
感谢您的回复。我在哪里指定我想限制角色的时间?被newLength常量所困惑,什么被返回......这个方法被放置在哪里?在另一种方法? @Don – lukaivicev
我已经更新了答案表明,这将是在FUNC文本框的主体(文本框:的UITextField,shouldChangeCharactersInRange范围:NSRange,replacementString字符串:字符串)功能。返回的内容是一个布尔值,表示输入的字符串是否在您的大小限制limitLength之下。正如你在上面提到的问题的答案中一样,'limitLength'是你班上定义的常数。 – Don
美丽。非常感谢。 – lukaivicev