Alert의 UITextField 사용자 지정 + 입력한 문자 수에 따라 TextField에 "/"추가

16327 단어 Swift

이번 내용


  • Alert 내의 UITextField 사용자 지정
  • 이미지 경고 위에서 세 번째 TextField에 입력 한 문자 수에 따라 TextField에 "/"추가



  • 코드와 간략한 설명



    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! + "/"
    
            }       
        }       
    }
    



    지적, 질문 등 있으면, 코멘트까지 부탁드립니다.

    좋은 웹페이지 즐겨찾기