Ios 用户输入11位数字后关闭键盘

Ios 用户输入11位数字后关闭键盘,ios,swift,dismiss,Ios,Swift,Dismiss,我一直在网站上寻找一个解决方案,在用户输入11位数字后关闭键盘。我在这里找到了a,但它是Objective-c,我正在寻找swift代码,有人能帮忙吗?您可以试试这个: func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let count: Int = textField.text?

我一直在网站上寻找一个解决方案,在用户输入11位数字后关闭键盘。我在这里找到了a,但它是Objective-c,我正在寻找swift代码,有人能帮忙吗?

您可以试试这个:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let count: Int = textField.text?.count ?? 0
    if count >= 11 {
        textField.resignFirstResponder()
    }
    return true
}
这就是它的工作原理

  func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

   // YOU SHOULD FIRST CHECK FOR THE BACKSPACE. IF BACKSPACE IS PRESSED ALLOW IT

    if string == "" {
        return true
    }

    if let characterCount = textField.text?.count {
        // CHECK FOR CHARACTER COUNT IN TEXT FIELD
        if characterCount >= 11 {
            // RESIGN FIRST RERSPONDER TO HIDE KEYBOARD
            return textField.resignFirstResponder()
        }
    }
    return true
}
编辑

1) 您应该将IBOutlet设置为文本字段

2) 在文本字段中将委托设置为self

3) YourViewController:UIViewController,UIExtFieldDelegate{}


4) 实现上述委托方法。检查退格,并允许用户输入退格以删除文本字段中的字符。

首先,向我们展示您的尝试?从Objective-C转换是一项非常重要的现实技能-有很多代码仍然/仅在ObjC中可用,值得花时间去尝试和改变它你忘了自己去尝试或者把它放进去here@MadProgrammer我不想改变它!!我在找那个快的@Am1rFT:/然后我建议您继续查找-毫无疑问,有人会为您编写一个-这不是目的-不,它不会起作用,因为虽然将调用委托,但文本字段不会包含全部更改。该代表询问开发人员,在下一个状态下,开发人员是否会更改
UITextField
的上一个状态。但您在下面编写的代码与我用“仔细检查”回答的代码非常相同,我没有编写任何答案。由于其他答案是相同的,它只是暗示这不会起作用,因为代码不会说谎:)很抱歉,您没有为其他人编写该代码。但这段代码中仍然存在问题,它应该按预期工作,在输入第10个字符后,一旦输入第11个字符,它就会隐藏键盘为什么需要“shouldChangeCharactersinRange,replacementString:string”这是委托方法,它检查是否允许用户输入下一个字符。所以,当textField中的字符数超过11时,键盘将退出这是委托方法,它将检查是否允许用户键入下一个字符。因此,当textField中的字符数超过11时,键盘将退出。因此,当我调用func时,我应该用它们替换什么?您不必调用此函数,它是UITextField的委托方法,您必须实现上述委托方法,它将自动检查条件并执行必要的操作。