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)