我是开发人员的新手,我正在尝试使用最新版本的Swift来限制可以在文本字段中输入的字符数。我试图遵循几个不同的教程,并检查了网站周围的一些不同的答案,但我没有太多运气。
目前,我已将其输入我的swift文件中:
@IBAction func InfoTextFieldLimit(sender: UITextField) {
self.InfoTextField.delegate = self
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let currentCharacterCount = textField.text?.characters.count ?? 0
if (range.length + range.location > currentCharacterCount) {
return false
}
let newLength = currentCharacterCount + string.characters.count - range.length
return newLength <= 10
}
}
...我没有收到任何错误,但是当我运行应用程序时似乎没有发生任何事情。
我还尝试了至少3种其他方法,我没有打扰复制。 (但可以根据要求提供)
有人能告诉我我做错了什么并指出了我正确的方向吗?非常感谢! ......我觉得我很可能会忽略一些显而易见的事情。
我也希望在未来的文本视图中做到这一点,那会有什么不同?
答案 0 :(得分:0)
我最初在objective-c中使用了这段代码:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 4) ? NO : YES;
}
我尝试将其转换为swift,让我知道它是否有效......你必须使用UITextFieldDelegate方法。
func textField( textField:UITextField,shouldChangeCharactersInRange range:NSRange,replacementString string:NSString)->Bool{
var newLength:NSUInteger = textField.text.length + string.length - range.length
return null(newLength > 4 )?false:true
}
答案 1 :(得分:0)
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let maxLength = 50
guard let text = textField.text else { return true }
let newLength = text.characters.count + string.characters.count - range.length
return newLength <= maxLength
}
另请确保您已将UITextField
的代理人设置为UIViewController