限制UITextField中的字符? - Swift / Xcode

时间:2016-03-30 14:35:44

标签: ios swift2 uitextfield xcode7

我是开发人员的新手,我正在尝试使用最新版本的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种其他方法,我没有打扰复制。 (但可以根据要求提供)

有人能告诉我我做错了什么并指出了我正确的方向吗?非常感谢! ......我觉得我很可能会忽略一些显而易见的事情。

我也希望在未来的文本视图中做到这一点,那会有什么不同?

2 个答案:

答案 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