用于输入金额的 UITextField

2024-03-20

我正在开发一个销售点应用程序。

所以我想

  1. 假设用户输入100000但我希望它自动显示100,000. and 1000000 become 1,000,000

  2. 第二个问题是,我不希望用户能够输入.他们自己。

  3. 第三个问题是,既然这是钱,我们不能让用户一开始就输入0。

有任何想法吗?

到目前为止,我已经设法将输入限制为仅十进制数字

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

        let numberSet: NSCharacterSet = NSCharacterSet.decimalDigitCharacterSet().invertedSet;
        return string.stringByTrimmingCharactersInSet(numberSet).length > 0 || string == "";
}

非常感谢

P.S.:我不需要任何小数位,我们还需要考虑用户按下退格键时更改光标位置的情况


Xcode 9 • 斯威夫特 4

import UIKit

class IntegerField: UITextField {
    var lastValue = 0
    let maxValue = 1_000_000_000
    var amount: Int {
        if let newValue = Int(string.digits), newValue < maxValue {
            lastValue = newValue
        } else if !hasText {
            lastValue = 0
        }
        return lastValue
    }
    override func didMoveToSuperview() {
        textAlignment = .right
        keyboardType = .numberPad
        text = Formatter.decimal.string(for: amount)
        addTarget(self, action: #selector(editingChanged), for: .editingChanged)
    }
    @objc func editingChanged(_ textField: UITextField) {
        text = Formatter.decimal.string(for: amount)
    }
}

extension NumberFormatter {
    convenience init(numberStyle: Style) {
        self.init()
        self.numberStyle = numberStyle
    }
}
struct Formatter {
    static let decimal = NumberFormatter(numberStyle: .decimal)
}
extension UITextField {
    var string: String { return text ?? "" }
}

extension String {
    private static var digitsPattern = UnicodeScalar("0")..."9"
    var digits: String {
        return unicodeScalars.filter { String.digitsPattern ~= $0 }.string
    }
}

extension Sequence where Iterator.Element == UnicodeScalar {
    var string: String { return String(String.UnicodeScalarView(self)) }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于输入金额的 UITextField 的相关文章

随机推荐

  • 如何使用Azure Blob存储挂载数据?

    我是 Azure Databricks 的新手 我的导师建议我完成机器学习训练营 https aischool microsoft com en us machine learning learning paths ai platform
  • StackFrame 的性能如何?

    我正在考虑使用类似的东西StackFrame stackFrame new StackFrame 1 记录执行方法 但我不知道它的性能影响 堆栈跟踪是否是在每次方法调用时都会构建的 因此性能不应该成为问题 还是仅在需要时才构建 您是否建议在
  • 上传进度 - 有时 $_SESSION[$key] 为空

    我有 Ubuntu 12 04 LTS 并使用 PHP 5 5 和 Apache2 通过 PHP 会话上传进度来实现上传进度 问题是它有时有效 有时无效 我的意思是有时我在上传开始时直接获得 100 的进度百分比而没有完成上传 这意味着在这
  • 自动重新加载作为 PySpark 依赖项添加到驱动程序中的模块中的更改

    我刚刚注意到一个微妙的问题 在使用时addPyFile在 PySpark 和autoreload在 Jupyter 笔记本中 发生的情况是 我在 PySpark UDF 中使用的模块中有一些代码 因此 据我所知 这些模块需要通过以下方式添加
  • 在Three.js中,如何翻译Vector3?

    我创建了一个Vector3 called ori 我已经填充了它的坐标 x y 和 z 现在 我该如何平移该矢量 例如沿 z 轴 的指示值 我试过这个 ori translateZ 100 这给我一个错误 TypeError 无法读取未定义
  • 使用哈希将类添加到具有特定 href 的 a 元素

    我试图根据 URL 哈希向特定元素添加 活动 类 但它没有按我的预期工作 这是我的代码 var hash window location hash substr 1 if hash false products copy div produ
  • 在 Sequelize model.destroy({ truncate: true }) 中不重置主键

    在 Sequelize 中 我使用这个函数 model destory truncate true 它删除表中的所有数据 但问题是它不会重置表中应设置为零的主键序列 我正在使用Mysql 有人说Mysql会自动重置主键序列 但在我的情况下并
  • C++ 标准是否对浮点数的表示指定了任何内容?

    对于类型T为此std is floating point
  • 在 igraph 中绘制网络时,R 绘图边距太大

    我已经搜索过 但还没有找到可以开始工作的解决方案 我没有任何可复制的数据 但我有下面的图表说明了我的问题 我的图太小了 对我的问题可能是什么有什么想法吗 下图大约有一半的区域是空白 使用以下命令设置边距参数 par mar c 0 0 0
  • webapi 返回的动态 JavaScript

    我正在使用 requirejs 为我的页面加载 JavaScript 我有一个 webApi 路由 可以使用 Newtonsoft JObject 动态读取文件并返回 JSON 然后 在客户端 我获取结果并将其分配给本地 JavaScrip
  • iOS7 上自动布局忽略 UITabBar(栏下的内容)

    我已在情节提要中将选项卡栏设置为不透明 但我似乎仍然是半透明的 当我设置自定义 UITabBarController 时setBarStyle仅提供不透明黑色 但这是最不重要的问题 无论我做什么 我的视图内容都会位于选项卡栏下方 就像它被
  • 我刚刚部署了我的 Vite React 站点,但我的图标/图像没有部署

    I deployed my Vite React site on Netlify but my skill icons aren t rendered Here s the site https mjshubham21 portfolio
  • Swift:验证用户名输入

    在开发 Swift 应用程序时 我有一个由用户填写的表单 我希望用户选择自己的用户名 我想要对用户名的唯一限制是 没有特殊字符 例如 只允许使用字母 下划线和数字 长度最多应为 18 个字符 最少为 7 个字符 在哪里可以找到验证输入字符串
  • 由于导入量角器而无法加载 config.ts

    我正在尝试启动一个新的量角器项目来测试有角度的网站 我全局安装了node js typescript protractor 和jasmine 我转到项目文件夹并执行webdriver manager update 那我就做webdriver
  • Apache CXF 生成数字而不是字符串

    如果一个字符串看起来像一个数字 例如 111 CXF 不将其作为字符串返回 而是作为数字返回
  • Apache Spark 中的 CPU 使用率是否受到限制?

    我最近发现 在 UDF 中添加并行计算 例如使用并行集合 可以显着提高性能 即使在运行 Spark 时也是如此local 1 模式或使用具有 1 个执行器和 1 个核心的 Yarn E g in local 1 模式下 Spark Jobs
  • 弧形边框 CSS 实现

    最近我在Dribbble上看到一个设计理念 对我很有启发 特别是顶部和底部带有弯曲 U 形的侧边栏给了我关于制作选项卡堆栈或流程图的很好的想法 我可以用 alpha 图像来制作它 但使用纯 CSS 会更好 而且我不介意 CSS3 不过我对
  • 快速从模数和指数创建 SecKey

    我尝试制作自己的 SecKey exponent let exponent 10001 modulus let modulus D6250B831F82EC984513922E797283E4D3879E1F0AD52364EBDA5A56
  • SQL Server:什么是 ODBC 规范函数?

    什么是 ODBC 规范函数 例如 fn NOW 基本上 这些规范函数是微软承诺将适用于其提供商支持的所有类型的数据源的一组函数 这意味着您不必根据实际使用的数据提供程序来区分您的代码 这些函数不是基本 SQL 的一部分 因此您应该尝试找到可
  • 用于输入金额的 UITextField

    我正在开发一个销售点应用程序 所以我想 假设用户输入100000但我希望它自动显示100 000 and 1000000 become 1 000 000 第二个问题是 我不希望用户能够输入 他们自己 第三个问题是 既然这是钱 我们不能让用