我正在为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
}