如何使用Swift在Xcode上创建自定义数字键盘? [关闭]

问题描述 投票:-3回答:2

我想在Xcode上创建自定义数字键盘。我该怎么办?我还希望有一个只打印一次的小数点按钮。

ios swift custom-keyboard
2个回答
1
投票

显然,您可以将键盘类型设置为.decimalPad,并且将获得带有小数点分隔符的内置数字小键盘:

enter image description here

如果要实现自己的自定义数字键盘,则可以执行类似A Swift example of Custom Views for Data Input (custom in-app keyboard)的操作,创建自己的inputView

最后,如果要输入仅带一个小数点分隔符的十进制数,则可以实现UITextFieldDelegate,并且最多只能接受一个小数位:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let previousText = (textField.text ?? "")
    let decimalSeparator = Locale.current.decimalSeparator ?? "."
    guard let range = Range(range, in: previousText) else { return false }
    let text = previousText.replacingCharacters(in: range, with: string)
    return text.range(of: #"^\d*[\#(decimalSeparator)]?\d*$"#, options: .regularExpression) != nil
}

注意,允许输入的十进制数字不带前导数字(例如输入“ .5”)。如果要强制用户输入前导数字,则可以将最后一行更改为:

return text.range(of: #"^(\d{1,}[\#(decimalSeparator)])?\d*$"#, options: .regularExpression) != nil

主题上还有其他变化(例如,我可能允许输入中包含空格和数千个分隔符,然后在以后进行清理,以方便从剪贴板中粘贴数字,但希望可以说明这个想法。


0
投票

您可以使用此广告连播为iOS应用创建自定义数字键盘。我使用了它,实现起来很简单直接。

https://cocoapods.org/pods/NumPad

© www.soinside.com 2019 - 2024. All rights reserved.