当前位置: 首页 > 面试题库 >

在Swift中将用户输入限制为有效的十进制数字

夏锐藻
2023-03-14
问题内容

我已经找到了很多关于如何在Objective-C中执行此操作的指南,但是我希望看到一种更加面向Swift的方法

我有一个UITextField,用户可以在其中输入货币价格。文本字段将调用小数键盘。但是,在iPad上,出现的键盘具有整个范围的非十进制符号。

基本上,对于每一次按键,我都希望不可能在该字段中键入非数字或超出单个小数的任何内容。如果键入了一个十进制,我想使其不可能输入第二个十进制。如果删除了小数点,我想确保用户可以再次输入小数点。

关于如何迅速正确地执行此操作的任何想法?

但是我不知道该在哪里放置这些函数或如何调用它们。每当我尝试在参数中放入NSRange时,都会收到错误消息,提示我未正确创建范围。


问题答案:

这是一个简单的示例:

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.textField.delegate = self

    }

    //Textfield delegates
    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { // return NO to not change text

        switch string {
        case "0","1","2","3","4","5","6","7","8","9":
            return true
        case ".":
            let array = Array(textField.text)
            var decimalCount = 0
            for character in array {
                if character == "." {
                    decimalCount++
                }
            }

            if decimalCount == 1 {
                return false
            } else {
                return true
            }
        default:
            let array = Array(string)
            if array.count == 0 {
                return true
            }
            return false
        }
    }
}


 类似资料:
  • 问题内容: 如何在Swift中将用户的TextField输入限制为数字? 问题答案: 您可以使用的方法将用户的输入限制为数字: 为Swift 3更新:

  • 我正在寻找一个示例,使用Java8 u40的新类将用户输入限制为只有数字和小数点。http://download.java.net/jdk9/jfxdocs/javafx/scene/control/TextFormatter.Change.html

  • 用户用十六进制或二进制输入一个数字(必须以0x或0b为前缀,如果没有给出错误信息) 我不能用基数,我只是用整数。parseInt(s) 我不知道怎样才能使这个计划奏效。。请帮帮我,我还缺什么?

  • 问题内容: 如何在Swift中将Int转换为UInt8?例。我想将数字22转换为0b00010110 问题答案: 您可以使用带有参数的初始化程序将十进制值转换为人类可读的二进制 表示形式 : 如果您愿意,也可以很容易地用任意数量的零填充它: 斯威夫特5

  • 问题内容: 我正在寻找一种简单的方法来在Swift中将二进制数转换为十进制数。例如,二进制的“ 10”变为十进制的“ 2”。 谢谢, 问题答案: 更新 为 斯威夫特2: 所有整数类型有 现在的方法,该方法根据给定的基数将字符串转换为整数: (先前的答案:) 您可以简单地使用BSD库函数,该函数根据给定的基数将字符串转换为数字:

  • 我很难找到编程1课作业的答案。赋值是提示用户以二进制输入(最多4位),并将其转换为十进制等效值。不允许使用循环、条件语句、ParseInt以及除模运算符和其他数学运算符以外的任何其他运算符。 我在数学方面遇到了麻烦,我想一旦我理解了如何使用模数运算符来回答这个问题,我就可以为它编写代码了。 我已经搜索过了,但没有找到任何能够帮助我的东西。