我有一个UITextField
,其中键盘类型是数字键盘。我希望能够输入数字,以便将它们格式化为时间,例如:00:00
例如
打字1 - > 00:01
键入1,2 - > 00:12
键入1,2,3 - > 01:23
键入1,2,3,4 - > 12:34
12:34
代表12 minutes and 32 seconds
此外,一旦达到最多4位数,输入更多将无能为力。
我还希望将输入的内容(例如01:23
)转换为Int
秒 - 例如在这种情况下83
- 如果可能的话。
答案 0 :(得分:0)
使用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