问题描述
限制 TextField
长度的解决方案,但函数 count
已经更新,还有 count()
函数,所以我不'不明白如何使用它:
a solution to limit the length of a TextField
but the function count
has been updated, also count()
function, so I don't understand how to use this:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let newLength = count(textField.text.utf16) + count(string.utf16) - range.length
return newLength <= 10 // Bool
}
以及如何更新它以处理多个 TextField
,我想我必须说如果
And how to update this to work on multiple TextField
, I think I have to say if
textField = thisTextField.text...
推荐答案
shouldChangeCharactersInRange
执行以下操作(引自 docs)
shouldChangeCharactersInRange
does the following (Quoted from the docs)
询问代表是否应该更改指定的文本.
您添加到此方法的代码检查它是否超出您的限制(在您的示例中,它是 10)并返回 false,这意味着 textField 不应更改值.如果没有超过限制,则返回true,textField会改变值.
Your added code to this method checks if it exceeds your limit (In your example, it is 10) and returns false which means that the textField should not change values. If it did not exceed the limit, it will return true, and the textField will change values.
要为多个 textField 执行此操作,您需要为多个 textField 设置出口,然后在此方法中使用一个简单的 if 语句即可完成这项工作.
To do this for multiple textFields, you will need to have outlets to your multiple textFields, and then a simple if statement inside this method will do the job.
@IBOutlet weak var textfield1: UITextField!
@IBOutlet weak var textfield2: UITextField!
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let newLength = textField.text.characters.count + string.characters.count - range.length
if textField == textField1 {
return newLength <= 10 // Bool
} else if textField == textField2 {
return newLength <= 15 // Bool
}
return true
}
为了能够在您的代码中使用上述方法,您的包含这些 textFields 的 UIViewController
将需要实现 UITextFieldDelegate
协议,然后通过设置 UITextField
的委托属性是 UIViewController
.
To be able to use the above method in your code, your UIViewController
which contains these textFields will need to implement the UITextFieldDelegate
protocol, and then by setting the UITextField
's delegate property to be that UIViewController
.
还有关于 count
方法.它已经更新了很多次.计算字符串的字符数:
Also regarding the count
method. It has been updated many times. To count the number of characters for a string:
Swift1.2 之前 -> countElements(string)
Swift1.2 -> count(string)
Swift2 -> string.characters.count
Before Swift1.2 -> countElements(string)
Swift1.2 -> count(string)
Swift2 -> string.characters.count
这篇关于限制 Swift 2 中多个 UITextField 的长度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!