将文本字段限制为一位小数点输入,仅限数字,小数点后两位字符 - Swift 3

2023-12-11

我正在努力使用 Swift 3 来做到这一点。我有一个文本字段,我想将其限制为仅包含数字和一个小数点以及小数点后两个字符。我还想让它在输入非整数时不使用小数点的区域中工作。感谢您的任何建议!


您需要将委托分配给文本字段,并在 shouldChangeCharactersIn 委托方法中进行验证:

  1. 添加带有字符串验证方法的扩展:

    extension String{
    
        private static let decimalFormatter:NumberFormatter = {
            let formatter = NumberFormatter()
            formatter.allowsFloats = true
            return formatter
        }()
    
        private var decimalSeparator:String{
            return String.decimalFormatter.decimalSeparator ?? "."
        }
    
        func isValidDecimal(maximumFractionDigits:Int)->Bool{
    
            // Depends on you if you consider empty string as valid number
            guard self.isEmpty == false else {
                return true
            }
    
            // Check if valid decimal
            if let _ = String.decimalFormatter.number(from: self){
    
                // Get fraction digits part using separator
                let numberComponents = self.components(separatedBy: decimalSeparator)
                let fractionDigits = numberComponents.count == 2 ? numberComponents.last ?? "" : ""
                return fractionDigits.characters.count <= maximumFractionDigits
            }
    
            return false
        }
    
    }
    
  2. 在您的委托方法中:

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    
        // Get text
        let currentText = textField.text ?? ""
        let replacementText = (currentText as NSString).replacingCharacters(in: range, with: string)
    
        // Validate
        return replacementText.isValidDecimal(maximumFractionDigits: 2)
    
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将文本字段限制为一位小数点输入,仅限数字,小数点后两位字符 - Swift 3 的相关文章

  • iOS - 如何在 swift 中使用 `NSMutableString`

    我已经看过这段 Objective C 代码 但我很难在 swift 中做同样的事情 NSMutableAttributedString res self richTextEditor attributedText mutableCopy
  • 如何在iOS中处理1到3个手指的滑动手势

    我使用以下代码来处理代码中的 1 根手指滑动 UISwipeGestureRecognizer swipe UISwipeGestureRecognizer alloc initWithTarget self action selector
  • 将自定义数据包含到 iOS 故障转储中

    你好 堆栈溢出 有一个简单的问题要问您 当我的应用程序在用户的设备上崩溃时 是否可以将自定义错误数据嵌入到自动生成的 iOS 故障转储中 例如 我的 SQlite 数据库由于某种原因无法运行 例如 数据库文件已损坏 我无法从这个错误中恢复
  • 如何制作带有 SWIFT 图像的弹出窗口

    我想知道如何制作类似于此示例的弹出窗口 原始窗口充满了按钮 选择这些按钮后将拉出我想要使用的图像 我会简单地创建一个可重用的UIView组件以及作为子视图所需的一切 例如UIImageView为了你的形象 UILabel or a UIBu
  • 无法在 Swift 中对闭包进行弱引用

    Update 我试着不弱化地写一下 好像也没有漏的情况 所以也许这个问题已经没有必要了 在 Objective C ARC 中 当你想让一个闭包能够在闭包内部使用它自己时 该块不能捕获对自身的强引用 否则它将是一个保留循环 因此您可以使闭包
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • dyld:无法加载插入的库

    当我尝试运行 UI 和单元测试时 出现异常 dyld 无法加载插入的库 private var containers Bundle Application AutoTestingApp app Frameworks IDEBundleInj
  • iOS:生成pdf时绘制文本时如何设置字体?

    我在ios应用程序中使用drawpdf函数生成pdf 同时调用nsobject类中的drawtext函数 它根据我指定的框架和字符串清楚地绘制文本 我的代码是 void drawText NSString textToDraw inFram
  • 如何在 Swift 中从 UIColor 获取 RGB 代码(INT)[重复]

    这个问题在这里已经有答案了 我想在 Swift 中获取 UIColor 的 RGB 值 let swiftColor UIColor red 1 green 165 255 blue 0 alpha 1 println RGB Value
  • 用户验证 Facebook 后未调用应用程序打开 Url 方法

    我已将 ios 应用程序中的 facebook 升级到 3 0 并使用提供的代码https developers facebook com docs howtos login with facebook using ios sdk http
  • Swift - 元类型 .Type 和 .self 之间有什么区别?

    元类型有什么区别 Type and self在斯威夫特 Do self and Type返回一个struct 我明白那个 self可以用来检查dynamicType 你如何使用 Type 首先也是最重要的是查看 Apple 文档type o
  • 调整 UIImage 的大小而不将其完全加载到内存中?

    我正在开发一个应用程序 用户可以在其中尝试加载非常非常大的图像 这些图像首先在表格视图中显示为缩略图 我的原始代码会在大图像上崩溃 因此我重写它以首先将图像直接下载到磁盘 是否有一种已知的方法可以调整磁盘上图像的大小 而无需通过以下方式将其
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • 在实例化对象之前是否可以检查故事板中是否存在标识符?

    在我的代码中我有这一行 但我想知道是否有办法检查是否 一些控制器 在我将它与 一起使用之前就存在实例化ViewControllerWithIdentifier 方法 如果标识符不存在 则应用程序崩溃 如果没有好的方法 这并不是一个大问题 我
  • Objective-C 中发送给对象的消息可以被监听或者打印出来吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Objective C 中拦截方法调用 https stackoverflow com questions 1618474 intercept method call in objective c 如
  • 叠加 SKScene 未显示

    我正在尝试将 SKScene 覆盖在 SCNScene 上 当我在模拟器和 iPhone6 上运行我的应用程序时 overlayScene SKScene 按预期显示 但是当我尝试在 iPhone5 上运行它 尝试了 2 个不同的设备 时
  • iPhone 上的纵向 UISplitViewController 在 iOS 8 中始终显示主视图和细节视图

    UISplitViewController in portrait在 iPhone 上始终显示主控和细节iOS 8 我尝试子类化UISplitViewController并将其配置为同时显示主视图和细节视图 但没有任何效果 class AP
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的
  • 隐藏选项卡栏项目并对齐其他选项卡项目

    在我的应用程序中 我有 4 个选项卡栏项目 我正在 XIB 文件中添加这 4 个选项卡栏项目 最初我必须显示 3 个选项卡栏项目 同步后我必须在我的应用程序中显示第 4 个选项卡栏项目 因此 为此 我使用以下代码隐藏第四个选项卡栏项目 se

随机推荐

  • 从一堆对象中提取一个对象并检测边缘

    在我的大学项目中 我需要通过检测叶子的边缘来根据植物叶子的形状来识别植物的种类 我使用OpenCV 2 4 9和C 但源图像是在植物的真实环境中拍摄的 并且有不止一片叶子 请参阅下面的示例图片 所以这里我需要提取一片叶子的边缘图案来进一步处
  • 在 Visual Studio 环境中将第一个自定义对话框添加到 WIX

    我正在使用 Visual Studio 构建我的 wix 文件 到目前为止 我有一个文件 Product wxs 它可以进行简单的安装 现在我想添加一些自定义对话框 我认为从下面的两篇文章中 我了解了如何做到这一点 在我设置了环境之后 ht
  • 基底存储中私有变量的可能性

    是否可以将私有变量存储在底层存储中 特别是以以下形式存储并在私有函数中访问它们 derive Encode Decode Default Clone PartialEq Debug pub struct MyStruct id Hash t
  • python:ext4 文件系统中 os.path.exists 的复杂性?

    有谁知道 os path exists 函数在带有 ext4 文件系统的 python 中的复杂性是多少 使用的底层目录结构Ext4 and Ext3 与中完全相同Ext2 Ext3添加日记 Ext4改善日记 日记与你的问题无关 最初 Ex
  • 列出物理驱动器空间

    我有大约 200 台服务器 我需要获取磁盘空间和逻辑驱动器空间详细信息 可用空间 已用空间和总空间 这是我的 PowerShell 查询 infoObjects New Object PSObject foreach machine in
  • 在 Firefox 中使用 css 转换时边框渲染不正确

    我有一个像这样的简单 CSS 箭头 arrow brown height 18px width 18px border top 6px solid 39170b border right 6px solid 39170b moz trans
  • UITextView 或 UILabel Swift 上图像的自定义项目符号

    我正在创建一个应用程序 它基本上是一个大型网站的移动版本 该网站有一个特定区域列出了产品功能 每个功能都标有独特的自定义图像 有没有办法快速做到这一点 本质上 创建一个字符串项目符号列表 但使用小图像作为项目符号点 将 UITextView
  • 如何插入重新启动游戏选项?

    我希望在骰子游戏结束时有一个选项 上面写着 您想重新启动吗 是还是不是 如果用户输入 是 游戏就会重新启动 并且会无限次 直到用户玩够游戏并退出 我知道你可以用循环来做到这一点 但是怎么做呢 import random print Dice
  • Java程序如何获得自己的进程ID?

    如何获取我的 Java 进程的 ID 我知道有几种依赖于平台的技巧 但我更喜欢更通用的解决方案 不存在可以保证在所有 jvm 实现中工作的独立于平台的方法 ManagementFactory getRuntimeMXBean getName
  • sed 就地编辑文件

    如何编辑文件single sed命令 目前 我必须手动将编辑的内容流式传输到新文件中 然后将新文件重命名为原始文件名 I tried sed i 但我的 Solaris 系统说 i是一个非法的选择 有不同的方法吗 The i option无
  • 推送不会修改作为函数参数的列表[重复]

    这个问题在这里已经有答案了 我是 common lisp 的新手 所以希望有人能向我澄清这一点 假设我们有一个列表并想要添加一个项目push修改它 CL USER gt defparameter xx 1 2 3 XX CL USER gt
  • PHP odbc_fetch_array 字符串限制

    我有以下sql SELECT bw imp step as imp action FROM cm3rm1 m1 INNER JOIN cm3rm2 m2 ON m1 number m2 number WHERE m1 number id 当
  • 如何使用 MLlib 在 Spark 上生成(原始标签、预测标签)的元组?

    我正在尝试使用从 Spark 上的 MLlib 返回的模型进行预测 目标是生成 orinalLabelInData predictedLabel 的元组 然后这些元组可以用于模型评估目的 实现这一目标的最佳方法是什么 谢谢 假设 parse
  • 如何获取用户位置?

    我试图使用以下代码获取用户的当前位置 但它不起作用 我已经添加了两个NSLocationWhenInUseUsageDescription钥匙和NSLocationAlwaysUsageDescription我的钥匙Info plist f
  • 如何在Windows窗体应用程序中实现键盘按键

    我想在 C Windows 窗体应用程序中实现键盘按钮按下命令 假设如果达到某个值 我想使用 Windows 窗体应用程序按下 L 键 这可能吗 怎么做 这可能对你有用 但是 更好的方法可能是设置表单的KeyPreview财产给true 然
  • Apache Kafka JDBC 连接器 - SerializationException:未知的魔术字节

    我们尝试使用 Confluence JDBC Sink Connector 将主题中的值写回到 postgres 数据库 connector class io confluent connect jdbc JdbcSinkConnector
  • 如何阻止 Java 自动将 char 值转换为 int?

    java编译器自动将char值转换为int 这样的代码不会引发错误 public void foo int i do something char c a foo c 有没有办法阻止编译器总是将 chars 转换为 int 或抛出错误 默认
  • 为什么我会收到此代码的“wait_fences:未能收到回复”?

    为什么我会收到此代码的 wait fences 未能收到回复 这是我使用通知与主线程通信的方式吗 import ViewController h implementation ViewController synthesize alert
  • 如果其他选择发生变化,AngularJS 会删除并添加选择框选项

    我正在寻找类似的解决方案problem之前已经用以下代码解决了这个问题 http jsfiddle net yLCVf 1 这是我需要从上面的 JSFiddle 使用的 JS document ready function select h
  • 将文本字段限制为一位小数点输入,仅限数字,小数点后两位字符 - Swift 3

    我正在努力使用 Swift 3 来做到这一点 我有一个文本字段 我想将其限制为仅包含数字和一个小数点以及小数点后两个字符 我还想让它在输入非整数时不使用小数点的区域中工作 感谢您的任何建议 您需要将委托分配给文本字段 并在 shouldCh