【Swift】TextFieldでn文字目が入力された時に-を挿入し、文字数制限を設ける。
// func textFieldDidChangeSelection(_ textField: UITextField) {
// if (textField.text?.count == 6) {
// textField.text = (textField.text)! + "-"
// }
// }
このようにTextFieldDelegateのtextFieldDidChangeSelection(:)を利用して上記のような書き方をするとbackで文字を消すことができません。
下記仕様を実現したいのです。
・TextFieldで6文字、13文字目を入力した際にハイフンを自動追加する。
・文字数制限は6-6-6にする。
class CreateViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var deckCodeLabel: UITextField!
// 省略
override func viewDidLoad() {
super.viewDidLoad()
deckCodeLabel.delegate = self
// Do any additional setup after loading the view.
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if (string == "") { return true }
if (textField.text?.count == 5 || textField.text?.count == 12) {
textField.text = (textField.text)! + string + "-"
return false
}
textField.text = String(textField.text!.prefix(19))
return true
}
これでOKです
この記事が気に入ったらサポートをしてみませんか?