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

UItextField限制用户在ipad上输入仅限数字的IOS应用程序,ios,ipad,keyboard,Ios,Ipad,Keyboard,我正在为Ipad开发一个应用程序。我正在设计一个忘记密码屏幕,允许用户输入UITextField的密码。根据设计,密码只允许数字输入。我可以在Iphone中将uitextfield键盘类型设置为phonepad,但该选项似乎不适用于Ipad(Ipad始终显示完整的键盘布局)。我们如何才能为Ipad应用程序实现只有数字的键盘 我必须设计自己的键盘布局吗? 任何帮助都将不胜感激。谢谢 键盘类型并不决定textfield接受何种输入,即使您使用仅显示数字的自定义键盘,用户也可以始终粘贴某些内容或使用外

我正在为Ipad开发一个应用程序。我正在设计一个忘记密码屏幕,允许用户输入
UITextField
的密码。根据设计,密码只允许数字输入。我可以在Iphone中将
uitextfield
键盘类型设置为
phonepad
,但该选项似乎不适用于Ipad(Ipad始终显示完整的键盘布局)。我们如何才能为Ipad应用程序实现只有数字的键盘

我必须设计自己的键盘布局吗?
任何帮助都将不胜感激。谢谢

键盘类型并不决定textfield接受何种输入,即使您使用仅显示数字的自定义键盘,用户也可以始终粘贴某些内容或使用外部硬件键盘。

为此,您需要观察输入,例如,通过成为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
}

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

键盘类型不决定文本字段接受哪种类型的输入,即使您使用只显示数字的自定义键盘,用户也可以始终粘贴某些内容或使用外部硬件键盘。

为此,您需要观察输入,例如,通过成为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上使用,你需要实现自己的键盘

有很多例子:


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

有很多例子:


是的,我面对的是同样的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
}
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
//避免使用除数字以外的任何其他字符

返回string.rangeOfCharacter(from:CharacterSet(charactersIn:“abcdefghijklmnopqrstuvwxyzabefghijklmnopqrstuvwxyz!@$%^&*()-=\+`~[{]}\\:;“/?>。是的,我在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
}
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
//避免使用除数字以外的任何其他字符

返回string.rangeOfCharacter(from:CharacterSet(charactersIn:“abcdefghijklmnopqrstuvwxyzabefghijklmnopqrstuvwxyz!”@$%^&*()-=\+`~[{]}\\\:;\”/?>。感谢您的帮助。ipad应用程序中的键盘布局。我们可以更改默认布局(带有所有字符、数字符号的布局)吗?LêKhánhVinh iPad没有像iPhone那样的十进制布局,我看到许多使用PIN码的应用程序为此绘制了自己的键盘。你知道任何库或示例,以便我们可以按照它们来实现iPad应用程序的数字键盘吗?@LêKhánhVinh查看一些选项,从未尝试过。谢谢你的帮助。谢谢你的帮助ipad应用程序中键盘的ut。我们可以更改默认布局(带有所有字符、数字符号的布局…)?LêKhánhVinh iPad没有像iPhone那样的十进制布局,我看到许多使用PIN码的应用程序为此绘制了自己的键盘。你知道任何库或示例,以便我们可以按照它们来实现iPad应用程序的数字键盘吗?@LêKhánhVinh查看一些选项,从未尝试过。