UItextField限制用户只能在ipad上输入数字IOS应用程序



我正在为Ipad开发一个应用程序。我正在设计一个忘记密码屏幕,允许用户输入密码到UITextField。按照设计,密码只允许数字输入。我可以在Iphone中将UITextFiled keyboardtype设置为phonepad,但该选项似乎不适用于Ipad (Ipad总是显示完整的键盘布局)。我们如何实现只有数字的Ipad应用的键盘?

我必须自己设计键盘布局吗?任何帮助我都很感激。谢谢!

键盘类型并没有规定文本字段接受哪种类型的输入,即使您使用只显示数字的自定义键盘,用户也总是可以粘贴一些内容或使用外部硬件键盘。

要做到这一点,您需要观察输入,例如,通过成为UITextFieldDelegate,然后:swift中的示例:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool{
    // non decimal digit character set, better save this as a property instead of creating it for each keyboard stroke
    let non_digits = NSCharacterSet.decimalDigits.inverted
    // Find location for non digits
    let range = string.rangeOfCharacter(from: non_digits)
    if range == nil { // no non digits found, allow change
        return true
    }
    return false // range was valid, meaning non digits were found
}

这将防止任何非数字字符被添加到文本字段。

iPad没有内置数字(电话/pin)键盘如果你想在iPad上实现这个,你需要实现你自己的键盘。

有很多这样的例子:

https://github.com/azu/NumericKeypad

https://github.com/lnafziger/Numberpad

https://github.com/benzado/HSNumericField

是的,我在iPad上也面临同样的问题,因此我使用了这个:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    // to avoid any other characters except digits
    return string.rangeOfCharacter(from: CharacterSet(charactersIn:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-=_+`~[{]}|\: ;"/?>.<,'")) == nil
}

相关内容

  • 没有找到相关文章