Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将输入UITextField的内容转换为计数器编号,如00:01_Ios_Swift_Uitextfield - Fatal编程技术网

Ios 将输入UITextField的内容转换为计数器编号,如00:01

Ios 将输入UITextField的内容转换为计数器编号,如00:01,ios,swift,uitextfield,Ios,Swift,Uitextfield,我有一个UITextField,其中键盘类型是数字键盘。我希望能够键入数字,以便将其格式化为时间,例如:00:00 例如 键入1->00:01 键入1,2->00:12 键入1,2,3->01:23 键入1,2,3,4->12:34 12:34表示12分32秒 此外,一旦达到最大4位数字,再多输入也无济于事 如果可能的话,我还想将键入的内容(如01:23)转换为秒的Int,例如,在本例中为83。您可以使用Int返回文本字段,并在用户按键时修改Int。然后将格式化的Int显示为文本。以下是一个示例

我有一个
UITextField
,其中键盘类型是数字键盘。我希望能够键入数字,以便将其格式化为时间,例如:
00:00

例如
键入1->
00:01

键入1,2->
00:12

键入1,2,3->
01:23

键入1,2,3,4->
12:34

12:34
表示
12分32秒

此外,一旦达到最大4位数字,再多输入也无济于事


如果可能的话,我还想将键入的内容(如
01:23
)转换为秒的
Int
,例如,在本例中为
83

您可以使用Int返回文本字段,并在用户按键时修改Int。然后将格式化的Int显示为文本。以下是一个示例:

import PlaygroundSupport

import UIKit

class ViewController: UIViewController {
    var textField =  UITextField(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
    var number = 0
    override func viewDidLoad() {
        super.viewDidLoad()
        textField.backgroundColor = .white
        textField.keyboardType = .numberPad
        textField.delegate = self
        view.addSubview(textField)
    }
}

extension ViewController: UITextFieldDelegate {
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        switch string {
        case "0","1","2","3","4","5","6","7","8","9":
            guard number < Int32.max / 100 else {
                return false
            }
            number *= 10
            number += Int(string)!
        case "":
            number /= 10
        default:
            break
        }

        let formatter = NumberFormatter()
        formatter.decimalSeparator = ":"
        formatter.minimumIntegerDigits = 1
        formatter.minimumFractionDigits = 2
        textField.text = formatter.string(from: NSNumber(value: Double(number) / 100.0))
        return false
    }
}

let v = ViewController()
PlaygroundPage.current.liveView = v.view
导入PlaygroundSupport
导入UIKit
类ViewController:UIViewController{
var textField=UITextField(帧:CGRect(x:0,y:0,宽度:100,高度:20))
变量编号=0
重写func viewDidLoad(){
super.viewDidLoad()
textField.backgroundColor=.white
textField.keyboardType=.numberPad
textField.delegate=self
view.addSubview(文本字段)
}
}
扩展视图控制器:UITextFieldDelegate{
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
开关串{
案例“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”:
防护编号
使用Int返回文本字段,并在用户按键时修改Int。然后将格式化的Int显示为文本。以下是一个示例:

import PlaygroundSupport

import UIKit

class ViewController: UIViewController {
    var textField =  UITextField(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
    var number = 0
    override func viewDidLoad() {
        super.viewDidLoad()
        textField.backgroundColor = .white
        textField.keyboardType = .numberPad
        textField.delegate = self
        view.addSubview(textField)
    }
}

extension ViewController: UITextFieldDelegate {
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        switch string {
        case "0","1","2","3","4","5","6","7","8","9":
            guard number < Int32.max / 100 else {
                return false
            }
            number *= 10
            number += Int(string)!
        case "":
            number /= 10
        default:
            break
        }

        let formatter = NumberFormatter()
        formatter.decimalSeparator = ":"
        formatter.minimumIntegerDigits = 1
        formatter.minimumFractionDigits = 2
        textField.text = formatter.string(from: NSNumber(value: Double(number) / 100.0))
        return false
    }
}

let v = ViewController()
PlaygroundPage.current.liveView = v.view
导入PlaygroundSupport
导入UIKit
类ViewController:UIViewController{
var textField=UITextField(帧:CGRect(x:0,y:0,宽度:100,高度:20))
变量编号=0
重写func viewDidLoad(){
super.viewDidLoad()
textField.backgroundColor=.white
textField.keyboardType=.numberPad
textField.delegate=self
view.addSubview(文本字段)
}
}
扩展视图控制器:UITextFieldDelegate{
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
开关串{
案例“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”:
防护编号
您尝试了什么?请显示一些代码…我尝试了这一点,但有很多错误,并不完全是我想要的:它只是逻辑。最低有效位读取时间为2秒,最高有效位读取时间为小时。将其保留为字符串,并使方法将其转换为秒数,如果用户希望键入19分零秒。当用户键入第一个零
01:90
??@LeoDabus时,它将显示什么?如果用户键入一个零,则将显示一个零,光标将转到行中的下一个字符。然后你可以输入一个1,它会显示
00:10
你尝试了什么?请显示一些代码…我尝试了这一点,但有很多错误,并不完全是我想要的:它只是逻辑。最低有效位读取时间为2秒,最高有效位读取时间为小时。将其保留为字符串,并使方法将其转换为秒数,如果用户希望键入19分零秒。当用户键入第一个零
01:90
??@LeoDabus时,它将显示什么?如果用户键入一个零,则将显示一个零,光标将转到行中的下一个字符。因此,您可以键入1,它将显示
00:10
您可以使用格式化程序的方法
string(for:Any)
而不是NumberFormatter方法
string(from:NSNumber)
并传递任何数字类型,在您的情况下为
Double
。例如:
formatter.string(for:Double(number)/100)
您可以使用格式化程序的方法
string(for:Any)
代替NumberFormatter方法
string(from:NSNumber)
并传递任何数字类型,在您的情况下
Double
。例如:
formatter.string(for:Double(number)/100)