Alert의 UITextField 사용자 지정 + 입력한 문자 수에 따라 TextField에 "/"추가
16327 단어 Swift
이번 내용
코드와 간략한 설명
Alert 내의 UITextField 사용자 정의
.placeholder
는 자리 표시자를 설정합니다. .layer.borderWidth
는 TextField의 border 두께를 설정합니다. (값이 클수록 굵어집니다) .layer.borderColor
는 TextField의 border 색상을 설정합니다. .borderStyle
는 border의 모양을 설정합니다. 종류는 .roundedRect .bezel .line .none
입니다. .clearButtonMode
는 TextField의 우단에 표시되는 입력된 문자를 삭제하는 버튼을 표시하거나 설정한다. 종류는 .always .never .unlessEditing .whileEditing
입니다. Alert
var productNameTextField:UITextField?
var janCodeTextField:UITextField?
var deadlineDayTextField:UITextField?
var tagTextField:UITextField?
let alert = UIAlertController(title: "データを追加", message:"データを追加する場合は、値を入力して下さい", preferredStyle: .alert)
alert.addTextField { (alertProductNameTextField:UITextField) in
alertProductNameTextField.placeholder = "商品名"
alertProductNameTextField.layer.borderWidth = 1.0
alertProductNameTextField.layer.borderColor = UIColor(red: 1.0, green: 0.40, blue: 0.51, alpha: 1.0).cgColor
alertProductNameTextField.borderStyle = .roundedRect
alertProductNameTextField.clearButtonMode = .always
productNameTextField = alertProductNameTextField
}
alert.addTextField { (alertJANCodeTextField:UITextField) in
alertJANCodeTextField.placeholder = "JANコード"
alertJANCodeTextField.layer.borderWidth = 1.0
alertJANCodeTextField.layer.borderColor = UIColor(red: 1.0, green: 0.40, blue: 0.51, alpha: 1.0).cgColor
alertJANCodeTextField.borderStyle = .roundedRect
alertJANCodeTextField.clearButtonMode = .always
janCodeTextField = alertJANCodeTextField
}
alert.addTextField { (alertDeadlineDayTextField:UITextField) in
alertDeadlineDayTextField.placeholder = "期限 例:2021/01/01"
alertDeadlineDayTextField.layer.borderWidth = 1.0
alertDeadlineDayTextField.layer.borderColor = UIColor(red: 1.0, green: 0.40, blue: 0.51, alpha: 1.0).cgColor
alertDeadlineDayTextField.borderStyle = .roundedRect
alertDeadlineDayTextField.clearButtonMode = .always
alertDeadlineDayTextField.addTarget(self, action: #selector(self.addSlash), for: .allEditingEvents)
deadlineDayTextField = alertDeadlineDayTextField
}
alert.addTextField { (alertTagTextField:UITextField) in
alertTagTextField.placeholder = "商品の分類 例:食品"
alertTagTextField.layer.borderWidth = 1.0
alertTagTextField.layer.borderColor = UIColor(red: 1.0, green: 0.40, blue: 0.51, alpha: 1.0).cgColor
alertTagTextField.borderStyle = .roundedRect
alertTagTextField.clearButtonMode = .always
tagTextField = alertTagTextField
}
alert.addAction(UIAlertAction(title: "キャンセル", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "追加", style: .default, handler: { _ in
//追加が押された時の処理
}))
입력한 문자 수에 따라 TextField에 "/" 추가
.addTarget(self, action: #selector(self.addSlash), for: .allEditingEvents)
에서 TextField 에 값이 입력될 때마다 text.count
가 4 문자째와 7 문자째일 때만 "/"를 추가합니다. Alert
alert.addTextField { (alertDeadlineDayTextField:UITextField) in
alertDeadlineDayTextField.placeholder = "期限 例:2021/01/01"
alertDeadlineDayTextField.layer.borderWidth = 1.0
alertDeadlineDayTextField.layer.borderColor = UIColor(red: 1.0, green: 0.40, blue: 0.51, alpha: 1.0).cgColor
alertDeadlineDayTextField.borderStyle = .roundedRect
alertDeadlineDayTextField.clearButtonMode = .always
alertDeadlineDayTextField.addTarget(self, action: #selector(self.addSlash), for: .allEditingEvents)
deadlineDayTextField = alertDeadlineDayTextField
}
2021
를 입력하면 "/"를 추가합니다. ( 2021/
입니다) 2021/08
를 입력할 때 "/"를 추가합니다. ( 2021/08/
입니다) #selector(self.addSlash)
@objc func addSlash(sender:UITextField){
if sender.text?.count == 4{
sender.text = sender.text! + "/"
}else if sender.text?.count == 7{
sender.text = sender.text! + "/"
}
}
}
끝
지적, 질문 등 있으면, 코멘트까지 부탁드립니다.
Reference
이 문제에 관하여(Alert의 UITextField 사용자 지정 + 입력한 문자 수에 따라 TextField에 "/"추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/HiroUrata/items/55334a96a5135cf8e893
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Alert의 UITextField 사용자 지정 + 입력한 문자 수에 따라 TextField에 "/"추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/HiroUrata/items/55334a96a5135cf8e893텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)