From 3cb4de4d62706263ff8c9d03c86c4ed5ea285edd Mon Sep 17 00:00:00 2001 From: BMO Date: Thu, 1 Apr 2021 17:12:12 +0900 Subject: [PATCH 01/18] =?UTF-8?q?IdTextFieldDelegate=20=EA=B0=9D=EC=B2=B4?= =?UTF-8?q?=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit idTextField, idTextFieldDelegate 를 같이 상속, 채택받던 객체를 TextFieldDelegate만 채택하도록 분리 Delegate에서는 Validater라는 하위 모델에서 텍스트 판단을 하도록 변경 --- .../swift-signup.xcodeproj/project.pbxproj | 16 +++++ .../UserInterfaceState.xcuserstate | Bin 51538 -> 61362 bytes .../swift-signup/Base.lproj/Main.storyboard | 3 +- .../swift-signup/IdTextFieldDelegate.swift | 54 ++++++++++++++ swift-signup/swift-signup/IdValidater.swift | 66 ++++++++++++++++++ .../swift-signup/ViewController.swift | 16 +++-- 6 files changed, 148 insertions(+), 7 deletions(-) create mode 100644 swift-signup/swift-signup/IdTextFieldDelegate.swift create mode 100644 swift-signup/swift-signup/IdValidater.swift diff --git a/swift-signup/swift-signup.xcodeproj/project.pbxproj b/swift-signup/swift-signup.xcodeproj/project.pbxproj index 4c009c8..85e1531 100644 --- a/swift-signup/swift-signup.xcodeproj/project.pbxproj +++ b/swift-signup/swift-signup.xcodeproj/project.pbxproj @@ -21,6 +21,10 @@ CE366C5A2613495D00506D3F /* PasswordConfirmTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C592613495D00506D3F /* PasswordConfirmTextField.swift */; }; CE366C622613EEDC00506D3F /* NameTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C612613EEDC00506D3F /* NameTextField.swift */; }; CE366C6A261401E900506D3F /* ButtonManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C69261401E900506D3F /* ButtonManager.swift */; }; + CE366C8E2614B17100506D3F /* IdTextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C8D2614B17100506D3F /* IdTextFieldDelegate.swift */; }; + CE366C9D261597BD00506D3F /* IdValidater.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C9C261597BD00506D3F /* IdValidater.swift */; }; + CE366CAE2615AF4100506D3F /* PasswordTextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CAD2615AF4100506D3F /* PasswordTextFieldDelegate.swift */; }; + CE366CB32615AF7C00506D3F /* PasswordValidater.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CB22615AF7C00506D3F /* PasswordValidater.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -61,6 +65,10 @@ CE366C592613495D00506D3F /* PasswordConfirmTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordConfirmTextField.swift; sourceTree = ""; }; CE366C612613EEDC00506D3F /* NameTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NameTextField.swift; sourceTree = ""; }; CE366C69261401E900506D3F /* ButtonManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonManager.swift; sourceTree = ""; }; + CE366C8D2614B17100506D3F /* IdTextFieldDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdTextFieldDelegate.swift; sourceTree = ""; }; + CE366C9C261597BD00506D3F /* IdValidater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdValidater.swift; sourceTree = ""; }; + CE366CAD2615AF4100506D3F /* PasswordTextFieldDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordTextFieldDelegate.swift; sourceTree = ""; }; + CE366CB22615AF7C00506D3F /* PasswordValidater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordValidater.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -124,6 +132,10 @@ CE366BDC2611BA8E00506D3F /* Assets.xcassets */, CE366BDE2611BA8E00506D3F /* LaunchScreen.storyboard */, CE366BE12611BA8E00506D3F /* Info.plist */, + CE366C8D2614B17100506D3F /* IdTextFieldDelegate.swift */, + CE366C9C261597BD00506D3F /* IdValidater.swift */, + CE366CAD2615AF4100506D3F /* PasswordTextFieldDelegate.swift */, + CE366CB22615AF7C00506D3F /* PasswordValidater.swift */, ); path = "swift-signup"; sourceTree = ""; @@ -280,10 +292,14 @@ CE366C3426123A5A00506D3F /* PasswordTextField.swift in Sources */, CE366BD82611BA8D00506D3F /* ViewController.swift in Sources */, CE366C3F2612470800506D3F /* CustomTextField.swift in Sources */, + CE366C8E2614B17100506D3F /* IdTextFieldDelegate.swift in Sources */, + CE366CAE2615AF4100506D3F /* PasswordTextFieldDelegate.swift in Sources */, CE366BD42611BA8D00506D3F /* AppDelegate.swift in Sources */, CE366C5A2613495D00506D3F /* PasswordConfirmTextField.swift in Sources */, CE366C2C2611F9CF00506D3F /* IdTextField.swift in Sources */, + CE366C9D261597BD00506D3F /* IdValidater.swift in Sources */, CE366BD62611BA8D00506D3F /* SceneDelegate.swift in Sources */, + CE366CB32615AF7C00506D3F /* PasswordValidater.swift in Sources */, CE366C6A261401E900506D3F /* ButtonManager.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate index 36f18ffc5311d8e9bfa374d57106fe92a9348cf9..3e1f12ef7b65bc681b0a862add250a8850e45554 100644 GIT binary patch delta 29363 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 diff --git a/swift-signup/swift-signup/Base.lproj/Main.storyboard b/swift-signup/swift-signup/Base.lproj/Main.storyboard index 4dc9534..9205a70 100644 --- a/swift-signup/swift-signup/Base.lproj/Main.storyboard +++ b/swift-signup/swift-signup/Base.lproj/Main.storyboard @@ -26,7 +26,7 @@ - + @@ -186,6 +186,7 @@ + diff --git a/swift-signup/swift-signup/IdTextFieldDelegate.swift b/swift-signup/swift-signup/IdTextFieldDelegate.swift new file mode 100644 index 0000000..ea9e776 --- /dev/null +++ b/swift-signup/swift-signup/IdTextFieldDelegate.swift @@ -0,0 +1,54 @@ + +import Foundation +import UIKit + +class IdTextFieldDelegate : NSObject, UITextFieldDelegate { + + private var validater : IdValidater + + override init() { + self.validater = IdValidater() + } + + func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { + let text = (textField.text ?? "") as NSString + let newText = text.replacingCharacters(in: range, with: string) + + let messageInfo = validater.evaluate(with: newText) + + textField.layer.borderWidth = 1.0 + if validater.state() == .valid { + textField.layer.borderColor = UIColor.systemGreen.cgColor + } else { + textField.layer.borderColor = UIColor.red.cgColor + } + + NotificationCenter.default.post(name: IdTextFieldDelegate.idTextFieldInfo, object: self, userInfo: messageInfo) + return true + } + + //MARK: 선택이 되면 파란색 테두리 + func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { + textField.layer.borderWidth = 1.0 + textField.layer.borderColor = UIColor.systemBlue.cgColor + return true + } + + //MARK: 선택이 끝나면 상태에 따라 테두리 색 변경 + func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { + textField.layer.borderWidth = 1.0 + validater.exitTextField() + + if validater.state() == .invalid { + textField.layer.borderColor = UIColor.red.cgColor + } else { + textField.layer.borderColor = UIColor.systemGray3.cgColor + } + + return true + } +} + +extension IdTextFieldDelegate { + static let idTextFieldInfo = Notification.Name("idTextFieldInfo") +} diff --git a/swift-signup/swift-signup/IdValidater.swift b/swift-signup/swift-signup/IdValidater.swift new file mode 100644 index 0000000..28ea6dd --- /dev/null +++ b/swift-signup/swift-signup/IdValidater.swift @@ -0,0 +1,66 @@ + +import Foundation +import UIKit + +class IdValidater { + + enum State { + case begin + case valid + case invalid + case end + } + + private var currentState: State + + init() { + self.currentState = .begin + } + + func evaluate(with text: String) -> [AnyHashable:Any] { + let idRegularExpression = "[a-z0-9_-]{5,20}" + let validString = NSPredicate(format: "SELF MATCHES %@", idRegularExpression) + + if validString.evaluate(with: text) { + self.currentState = .valid + } else { + self.currentState = .invalid + } + + return message(about: self.currentState) + } + + func message(about state: State) -> [AnyHashable:Any] { + var messageInfo : [AnyHashable:Any] = [:] + + switch state { + case .valid: + messageInfo.updateValue("사용 가능한 아이디입니다.", forKey: IdValidater.MessageInfo.text) + messageInfo.updateValue(UIColor.systemGreen, forKey: IdValidater.MessageInfo.color) + case .invalid: + messageInfo.updateValue("5~20자의 영문 소문자, 숫자와 특수기호(_)(-)만 사용 가능합니다.", forKey: IdValidater.MessageInfo.text) + messageInfo.updateValue(UIColor.red, forKey: IdValidater.MessageInfo.color) + default: + break + } + + return messageInfo + } + + func state() -> State { + return self.currentState + } + + func exitTextField() { + if self.currentState == .valid { + self.currentState = .end + } + } +} + +extension IdValidater { + enum MessageInfo { + case text + case color + } +} diff --git a/swift-signup/swift-signup/ViewController.swift b/swift-signup/swift-signup/ViewController.swift index 73b9793..f660471 100644 --- a/swift-signup/swift-signup/ViewController.swift +++ b/swift-signup/swift-signup/ViewController.swift @@ -25,11 +25,15 @@ class ViewController: UIViewController { @IBOutlet weak var nextButton: UIButton! private var buttonManager = ButtonManager() + // + @IBOutlet weak var idTextField: UITextField! + private var idTextFieldDelegate = IdTextFieldDelegate() + override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. - NotificationCenter.default.addObserver(self, selector: #selector(idGuideText), name: CustomTextField.idState, object: idText) + NotificationCenter.default.addObserver(self, selector: #selector(idGuideText), name: IdTextFieldDelegate.idTextFieldInfo, object: idTextFieldDelegate) NotificationCenter.default.addObserver(self, selector: #selector(passwordGuideText), name: CustomTextField.passwordState, object: passwordText) NotificationCenter.default.addObserver(self, selector: #selector(passwordConfirmGuideText), name: CustomTextField.passwordConfirmState, object: passwordConfirmText) NotificationCenter.default.addObserver(self, selector: #selector(nameGuideText), name: CustomTextField.nameState, object: nameText) @@ -40,14 +44,14 @@ class ViewController: UIViewController { } func registerDelegate() { - self.idText.delegate = idText + self.idTextField.delegate = idTextFieldDelegate self.passwordText.delegate = passwordText self.passwordConfirmText.delegate = passwordConfirmText self.nameText.delegate = nameText } func registerTextField() { - self.buttonManager.update(textField: type(of: idText), state: idText.currentState) +// self.buttonManager.update(textField: type(of: idText), state: idText.currentState) self.buttonManager.update(textField: type(of: passwordText), state: passwordText.currentState) self.buttonManager.update(textField: type(of: passwordConfirmText), state: passwordConfirmText.currentState) self.buttonManager.update(textField: type(of: nameText), state: nameText.currentState) @@ -56,14 +60,14 @@ class ViewController: UIViewController { //MARK: @objc 처리 @objc func idGuideText(notification: Notification) { - guard let text = notification.userInfo?[CustomTextField.MessageInfo.text] as? String, - let color = notification.userInfo?[CustomTextField.MessageInfo.color] as? UIColor + guard let text = notification.userInfo?[IdValidater.MessageInfo.text] as? String, + let color = notification.userInfo?[IdValidater.MessageInfo.color] as? UIColor else { return } self.idLabel.text = text self.idLabel.textColor = color - buttonManager.update(textField: type(of: idText), state: idText.currentState) +// buttonManager.update(textField: type(of: idText), state: idText.currentState) } @objc From 128385ce3c2eeafd19f060d6c64e1113813e2801 Mon Sep 17 00:00:00 2001 From: BMO Date: Thu, 1 Apr 2021 17:20:30 +0900 Subject: [PATCH 02/18] =?UTF-8?q?PasswordTextFieldDelegate=20=EA=B0=9D?= =?UTF-8?q?=EC=B2=B4=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit idTextField 커밋과 동 --- .../UserInterfaceState.xcuserstate | Bin 61362 -> 60421 bytes .../swift-signup/Base.lproj/Main.storyboard | 3 +- .../PasswordTextFieldDelegate.swift | 54 +++++++++ .../swift-signup/PasswordValidater.swift | 107 ++++++++++++++++++ .../swift-signup/ViewController.swift | 19 ++-- 5 files changed, 174 insertions(+), 9 deletions(-) create mode 100644 swift-signup/swift-signup/PasswordTextFieldDelegate.swift create mode 100644 swift-signup/swift-signup/PasswordValidater.swift diff --git a/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate index 3e1f12ef7b65bc681b0a862add250a8850e45554..cf8b37151f459f0881c35b4c9aeffe6ed9e74262 100644 GIT binary patch delta 26247 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 delta 26876 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 kf9k2!)2V@}=TiBp;ioG5`Po diff --git a/swift-signup/swift-signup/Base.lproj/Main.storyboard b/swift-signup/swift-signup/Base.lproj/Main.storyboard index 9205a70..785a66d 100644 --- a/swift-signup/swift-signup/Base.lproj/Main.storyboard +++ b/swift-signup/swift-signup/Base.lproj/Main.storyboard @@ -34,7 +34,7 @@ - + @@ -194,6 +194,7 @@ + diff --git a/swift-signup/swift-signup/PasswordTextFieldDelegate.swift b/swift-signup/swift-signup/PasswordTextFieldDelegate.swift new file mode 100644 index 0000000..7cac5df --- /dev/null +++ b/swift-signup/swift-signup/PasswordTextFieldDelegate.swift @@ -0,0 +1,54 @@ + +import Foundation +import UIKit + +class PasswordTextFieldDelegate : NSObject, UITextFieldDelegate { + + private var validater : PasswordValidater + + override init() { + self.validater = PasswordValidater() + } + + func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { + let text = (textField.text ?? "") as NSString + let newText = text.replacingCharacters(in: range, with: string) + + let messageInfo = validater.evaluate(with: newText) + + textField.layer.borderWidth = 1.0 + if validater.state() == .valid { + textField.layer.borderColor = UIColor.systemGreen.cgColor + } else { + textField.layer.borderColor = UIColor.red.cgColor + } + + NotificationCenter.default.post(name: PasswordTextFieldDelegate.passwordTextFieldInfo, object: self, userInfo: messageInfo) + return true + } + + //MARK: 선택이 되면 파란색 테두리 + func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { + textField.layer.borderWidth = 1.0 + textField.layer.borderColor = UIColor.systemBlue.cgColor + return true + } + + //MARK: 선택이 끝나면 상태에 따라 테두리 색 변경 + func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { + textField.layer.borderWidth = 1.0 + validater.exitTextField() + + if validater.state() == .begin || validater.state() == .end { + textField.layer.borderColor = UIColor.systemGray3.cgColor + } else { + textField.layer.borderColor = UIColor.red.cgColor + } + + return true + } +} + +extension PasswordTextFieldDelegate { + static let passwordTextFieldInfo = Notification.Name("passwordTextFieldInfo") +} diff --git a/swift-signup/swift-signup/PasswordValidater.swift b/swift-signup/swift-signup/PasswordValidater.swift new file mode 100644 index 0000000..a080ed1 --- /dev/null +++ b/swift-signup/swift-signup/PasswordValidater.swift @@ -0,0 +1,107 @@ + +import Foundation +import UIKit + +class PasswordValidater { + + enum State { + case begin + case valid + case lengthInvalid + case capitalInvalid + case numberInvalid + case specialInvalid + case end + } + + private var currentState: State + + init() { + self.currentState = .begin + } + + func evaluate(with text: String) -> [AnyHashable:Any] { + let capitalRegularExpression = "[A-Z]+" + let numberRegularExpression = "[0-9]+" + let specialRegularExpression = "[!@#$%^&*()_+=-]+" + + if text.count < 8 || text.count > 16 + { + self.currentState = .lengthInvalid + } + else if match(regularExpression: capitalRegularExpression, with: text) == false + { + self.currentState = .capitalInvalid + } + else if match(regularExpression: numberRegularExpression, with: text) == false + { + self.currentState = .numberInvalid + } + else if match(regularExpression: specialRegularExpression, with: text) == false + { + self.currentState = .specialInvalid + } + else + { + self.currentState = .valid + } + + var messageInfo = message(about: self.currentState) + messageInfo.updateValue(text, forKey: PasswordValidater.MessageInfo.password) + return messageInfo + } + + func match(regularExpression: String, with string: String) -> Bool { + let validString = try? NSRegularExpression(pattern: regularExpression, options: []) + + if validString?.firstMatch(in: string, options: [], range: NSRange(location: 0, length: string.count)) != nil { + return true + } else { + return false + } + } + + func message(about state: State) -> [AnyHashable:Any] { + var messageInfo : [AnyHashable:Any] = [:] + + switch state { + case .valid: + messageInfo.updateValue("사용 가능한 아이디입니다.", forKey: PasswordValidater.MessageInfo.text) + messageInfo.updateValue(UIColor.systemGreen, forKey: PasswordValidater.MessageInfo.color) + case .lengthInvalid: + messageInfo.updateValue("8자 이상 16자 이하로 입력해주세요.", forKey: PasswordValidater.MessageInfo.text) + messageInfo.updateValue(UIColor.red, forKey: PasswordValidater.MessageInfo.color) + case .capitalInvalid: + messageInfo.updateValue("영문 대문자를 최소 1자 이상 포함해주세요.", forKey: PasswordValidater.MessageInfo.text) + messageInfo.updateValue(UIColor.red, forKey: PasswordValidater.MessageInfo.color) + case .numberInvalid: + messageInfo.updateValue("숫자를 최소 1자 이상 포함해주세요.", forKey: PasswordValidater.MessageInfo.text) + messageInfo.updateValue(UIColor.red, forKey: PasswordValidater.MessageInfo.color) + case .specialInvalid: + messageInfo.updateValue("특수문자를 최소 1자 이상 포함해주세요.", forKey: PasswordValidater.MessageInfo.text) + messageInfo.updateValue(UIColor.red, forKey: PasswordValidater.MessageInfo.color) + default: + break + } + + return messageInfo + } + + func state() -> State { + return self.currentState + } + + func exitTextField() { + if self.currentState == .valid { + self.currentState = .end + } + } +} + +extension PasswordValidater { + enum MessageInfo { + case text + case color + case password + } +} diff --git a/swift-signup/swift-signup/ViewController.swift b/swift-signup/swift-signup/ViewController.swift index f660471..3bb04f0 100644 --- a/swift-signup/swift-signup/ViewController.swift +++ b/swift-signup/swift-signup/ViewController.swift @@ -29,12 +29,15 @@ class ViewController: UIViewController { @IBOutlet weak var idTextField: UITextField! private var idTextFieldDelegate = IdTextFieldDelegate() + @IBOutlet weak var passwordTextField: UITextField! + private var passwordTextFieldDelegate = PasswordTextFieldDelegate() + override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. NotificationCenter.default.addObserver(self, selector: #selector(idGuideText), name: IdTextFieldDelegate.idTextFieldInfo, object: idTextFieldDelegate) - NotificationCenter.default.addObserver(self, selector: #selector(passwordGuideText), name: CustomTextField.passwordState, object: passwordText) + NotificationCenter.default.addObserver(self, selector: #selector(passwordGuideText), name: PasswordTextFieldDelegate.passwordTextFieldInfo, object: passwordTextFieldDelegate) NotificationCenter.default.addObserver(self, selector: #selector(passwordConfirmGuideText), name: CustomTextField.passwordConfirmState, object: passwordConfirmText) NotificationCenter.default.addObserver(self, selector: #selector(nameGuideText), name: CustomTextField.nameState, object: nameText) NotificationCenter.default.addObserver(self, selector: #selector(buttonState), name: ButtonManager.buttonState, object: buttonManager) @@ -45,14 +48,14 @@ class ViewController: UIViewController { func registerDelegate() { self.idTextField.delegate = idTextFieldDelegate - self.passwordText.delegate = passwordText + self.passwordTextField.delegate = passwordTextFieldDelegate self.passwordConfirmText.delegate = passwordConfirmText self.nameText.delegate = nameText } func registerTextField() { // self.buttonManager.update(textField: type(of: idText), state: idText.currentState) - self.buttonManager.update(textField: type(of: passwordText), state: passwordText.currentState) +// self.buttonManager.update(textField: type(of: passwordText), state: passwordText.currentState) self.buttonManager.update(textField: type(of: passwordConfirmText), state: passwordConfirmText.currentState) self.buttonManager.update(textField: type(of: nameText), state: nameText.currentState) } @@ -72,16 +75,16 @@ class ViewController: UIViewController { @objc func passwordGuideText(notification: Notification) { - guard let text = notification.userInfo?[CustomTextField.MessageInfo.text] as? String, - let color = notification.userInfo?[CustomTextField.MessageInfo.color] as? UIColor, - let password = notification.userInfo?[PasswordTextField.UserInfo.password] as? String + guard let text = notification.userInfo?[PasswordValidater.MessageInfo.text] as? String, + let color = notification.userInfo?[PasswordValidater.MessageInfo.color] as? UIColor, + let password = notification.userInfo?[PasswordValidater.MessageInfo.password] as? String else { return } self.passwordLabel.text = text self.passwordLabel.textColor = color - self.passwordConfirmText.update(password: password) - buttonManager.update(textField: type(of: passwordText), state: passwordText.currentState) +// self.passwordConfirmText.update(password: password) +// buttonManager.update(textField: type(of: passwordText), state: passwordText.currentState) } @objc From c0b4d901784adf532c4e0b70c6cf44276a222059 Mon Sep 17 00:00:00 2001 From: BMO Date: Thu, 1 Apr 2021 17:34:26 +0900 Subject: [PATCH 03/18] =?UTF-8?q?PasswordConfirmTextFieldDelegate=20?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit idTextFieldDelegate 이유와 동 --- .../swift-signup.xcodeproj/project.pbxproj | 8 ++ .../UserInterfaceState.xcuserstate | Bin 60421 -> 62476 bytes .../swift-signup/Base.lproj/Main.storyboard | 3 +- .../PasswordConfirmTextFieldDelegate.swift | 58 +++++++++++++++ .../PasswordConfirmValidater.swift | 70 ++++++++++++++++++ .../swift-signup/ViewController.swift | 17 +++-- 6 files changed, 148 insertions(+), 8 deletions(-) create mode 100644 swift-signup/swift-signup/PasswordConfirmTextFieldDelegate.swift create mode 100644 swift-signup/swift-signup/PasswordConfirmValidater.swift diff --git a/swift-signup/swift-signup.xcodeproj/project.pbxproj b/swift-signup/swift-signup.xcodeproj/project.pbxproj index 85e1531..5d5d239 100644 --- a/swift-signup/swift-signup.xcodeproj/project.pbxproj +++ b/swift-signup/swift-signup.xcodeproj/project.pbxproj @@ -25,6 +25,8 @@ CE366C9D261597BD00506D3F /* IdValidater.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C9C261597BD00506D3F /* IdValidater.swift */; }; CE366CAE2615AF4100506D3F /* PasswordTextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CAD2615AF4100506D3F /* PasswordTextFieldDelegate.swift */; }; CE366CB32615AF7C00506D3F /* PasswordValidater.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CB22615AF7C00506D3F /* PasswordValidater.swift */; }; + CE366CB82615B9EE00506D3F /* PasswordConfirmTextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CB72615B9ED00506D3F /* PasswordConfirmTextFieldDelegate.swift */; }; + CE366CBD2615BA3400506D3F /* PasswordConfirmValidater.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CBC2615BA3400506D3F /* PasswordConfirmValidater.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -69,6 +71,8 @@ CE366C9C261597BD00506D3F /* IdValidater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdValidater.swift; sourceTree = ""; }; CE366CAD2615AF4100506D3F /* PasswordTextFieldDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordTextFieldDelegate.swift; sourceTree = ""; }; CE366CB22615AF7C00506D3F /* PasswordValidater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordValidater.swift; sourceTree = ""; }; + CE366CB72615B9ED00506D3F /* PasswordConfirmTextFieldDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordConfirmTextFieldDelegate.swift; sourceTree = ""; }; + CE366CBC2615BA3400506D3F /* PasswordConfirmValidater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordConfirmValidater.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -136,6 +140,8 @@ CE366C9C261597BD00506D3F /* IdValidater.swift */, CE366CAD2615AF4100506D3F /* PasswordTextFieldDelegate.swift */, CE366CB22615AF7C00506D3F /* PasswordValidater.swift */, + CE366CB72615B9ED00506D3F /* PasswordConfirmTextFieldDelegate.swift */, + CE366CBC2615BA3400506D3F /* PasswordConfirmValidater.swift */, ); path = "swift-signup"; sourceTree = ""; @@ -290,6 +296,8 @@ files = ( CE366C622613EEDC00506D3F /* NameTextField.swift in Sources */, CE366C3426123A5A00506D3F /* PasswordTextField.swift in Sources */, + CE366CB82615B9EE00506D3F /* PasswordConfirmTextFieldDelegate.swift in Sources */, + CE366CBD2615BA3400506D3F /* PasswordConfirmValidater.swift in Sources */, CE366BD82611BA8D00506D3F /* ViewController.swift in Sources */, CE366C3F2612470800506D3F /* CustomTextField.swift in Sources */, CE366C8E2614B17100506D3F /* IdTextFieldDelegate.swift in Sources */, diff --git a/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate index cf8b37151f459f0881c35b4c9aeffe6ed9e74262..0ac2f339ec1e71fc584bd9c0c1ad06c15815fb2c 100644 GIT binary patch delta 26199 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 YO;0psWd6OH_v-bxsnNgvf1B|C0h- - + @@ -192,6 +192,7 @@ + diff --git a/swift-signup/swift-signup/PasswordConfirmTextFieldDelegate.swift b/swift-signup/swift-signup/PasswordConfirmTextFieldDelegate.swift new file mode 100644 index 0000000..da85c0b --- /dev/null +++ b/swift-signup/swift-signup/PasswordConfirmTextFieldDelegate.swift @@ -0,0 +1,58 @@ + +import Foundation +import UIKit + +class PasswordConfirmTextFieldDelegate : NSObject, UITextFieldDelegate { + + private var validater : PasswordConfirmValidater + + override init() { + self.validater = PasswordConfirmValidater() + } + + func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { + let text = (textField.text ?? "") as NSString + let newText = text.replacingCharacters(in: range, with: string) + + let messageInfo = validater.evaluate(with: newText) + + textField.layer.borderWidth = 1.0 + if validater.state() == .valid { + textField.layer.borderColor = UIColor.systemGreen.cgColor + } else { + textField.layer.borderColor = UIColor.red.cgColor + } + + NotificationCenter.default.post(name: PasswordConfirmTextFieldDelegate.passwordConfirmTextFieldInfo, object: self, userInfo: messageInfo) + return true + } + + //MARK: 선택이 되면 파란색 테두리 + func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { + textField.layer.borderWidth = 1.0 + textField.layer.borderColor = UIColor.systemBlue.cgColor + return true + } + + //MARK: 선택이 끝나면 상태에 따라 테두리 색 변경 + func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { + textField.layer.borderWidth = 1.0 + validater.exitTextField() + + if validater.state() == .invalid { + textField.layer.borderColor = UIColor.red.cgColor + } else { + textField.layer.borderColor = UIColor.systemGray3.cgColor + } + + return true + } + + func validaterUpdate(password: String) { + self.validater.update(password: password) + } +} + +extension PasswordConfirmTextFieldDelegate { + static let passwordConfirmTextFieldInfo = Notification.Name("passwordConfirmTextFieldInfo") +} diff --git a/swift-signup/swift-signup/PasswordConfirmValidater.swift b/swift-signup/swift-signup/PasswordConfirmValidater.swift new file mode 100644 index 0000000..bf7dbef --- /dev/null +++ b/swift-signup/swift-signup/PasswordConfirmValidater.swift @@ -0,0 +1,70 @@ + +import Foundation +import UIKit + +class PasswordConfirmValidater { + + enum State { + case begin + case valid + case invalid + case end + } + + private var currentState: State + private var password: String + + init() { + self.currentState = .begin + self.password = "" + } + + func evaluate(with text: String) -> [AnyHashable:Any] { + + if self.password == text { + self.currentState = .valid + } else { + self.currentState = .invalid + } + + return message(about: self.currentState) + } + + func message(about state: State) -> [AnyHashable:Any] { + var messageInfo : [AnyHashable:Any] = [:] + + switch state { + case .valid: + messageInfo.updateValue("비밀번호가 일치합니다.", forKey: PasswordConfirmValidater.MessageInfo.text) + messageInfo.updateValue(UIColor.systemGreen, forKey: PasswordConfirmValidater.MessageInfo.color) + case .invalid: + messageInfo.updateValue("비밀번호가 일치하지 않습니다.", forKey: PasswordConfirmValidater.MessageInfo.text) + messageInfo.updateValue(UIColor.red, forKey: PasswordConfirmValidater.MessageInfo.color) + default: + break + } + + return messageInfo + } + + func state() -> State { + return self.currentState + } + + func exitTextField() { + if self.currentState == .valid { + self.currentState = .end + } + } + + func update(password: String) { + self.password = password + } +} + +extension PasswordConfirmValidater { + enum MessageInfo { + case text + case color + } +} diff --git a/swift-signup/swift-signup/ViewController.swift b/swift-signup/swift-signup/ViewController.swift index 3bb04f0..9932938 100644 --- a/swift-signup/swift-signup/ViewController.swift +++ b/swift-signup/swift-signup/ViewController.swift @@ -32,13 +32,16 @@ class ViewController: UIViewController { @IBOutlet weak var passwordTextField: UITextField! private var passwordTextFieldDelegate = PasswordTextFieldDelegate() + @IBOutlet weak var passwordConfirmTextField: UITextField! + private var passwordConfirmTextFieldDelegate = PasswordConfirmTextFieldDelegate() + override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. NotificationCenter.default.addObserver(self, selector: #selector(idGuideText), name: IdTextFieldDelegate.idTextFieldInfo, object: idTextFieldDelegate) NotificationCenter.default.addObserver(self, selector: #selector(passwordGuideText), name: PasswordTextFieldDelegate.passwordTextFieldInfo, object: passwordTextFieldDelegate) - NotificationCenter.default.addObserver(self, selector: #selector(passwordConfirmGuideText), name: CustomTextField.passwordConfirmState, object: passwordConfirmText) + NotificationCenter.default.addObserver(self, selector: #selector(passwordConfirmGuideText), name: PasswordConfirmTextFieldDelegate.passwordConfirmTextFieldInfo, object: passwordConfirmTextFieldDelegate) NotificationCenter.default.addObserver(self, selector: #selector(nameGuideText), name: CustomTextField.nameState, object: nameText) NotificationCenter.default.addObserver(self, selector: #selector(buttonState), name: ButtonManager.buttonState, object: buttonManager) @@ -49,14 +52,14 @@ class ViewController: UIViewController { func registerDelegate() { self.idTextField.delegate = idTextFieldDelegate self.passwordTextField.delegate = passwordTextFieldDelegate - self.passwordConfirmText.delegate = passwordConfirmText + self.passwordConfirmTextField.delegate = passwordConfirmTextFieldDelegate self.nameText.delegate = nameText } func registerTextField() { // self.buttonManager.update(textField: type(of: idText), state: idText.currentState) // self.buttonManager.update(textField: type(of: passwordText), state: passwordText.currentState) - self.buttonManager.update(textField: type(of: passwordConfirmText), state: passwordConfirmText.currentState) +// self.buttonManager.update(textField: type(of: passwordConfirmText), state: passwordConfirmText.currentState) self.buttonManager.update(textField: type(of: nameText), state: nameText.currentState) } @@ -83,20 +86,20 @@ class ViewController: UIViewController { } self.passwordLabel.text = text self.passwordLabel.textColor = color -// self.passwordConfirmText.update(password: password) + self.passwordConfirmTextFieldDelegate.validaterUpdate(password: password) // buttonManager.update(textField: type(of: passwordText), state: passwordText.currentState) } @objc func passwordConfirmGuideText(notification: Notification) { - guard let text = notification.userInfo?[CustomTextField.MessageInfo.text] as? String, - let color = notification.userInfo?[CustomTextField.MessageInfo.color] as? UIColor + guard let text = notification.userInfo?[PasswordConfirmValidater.MessageInfo.text] as? String, + let color = notification.userInfo?[PasswordConfirmValidater.MessageInfo.color] as? UIColor else { return } self.passwordConfirmLabel.text = text self.passwordConfirmLabel.textColor = color - buttonManager.update(textField: type(of: passwordConfirmText), state: passwordConfirmText.currentState) +// buttonManager.update(textField: type(of: passwordConfirmText), state: passwordConfirmText.currentState) } @objc From b5ebeea88beda9dcdc7ed91edec667cdee67f872 Mon Sep 17 00:00:00 2001 From: BMO Date: Thu, 1 Apr 2021 17:41:04 +0900 Subject: [PATCH 04/18] =?UTF-8?q?NameTextFieldDelegate=20=EA=B0=9D?= =?UTF-8?q?=EC=B2=B4=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit idTextFieldDelegate 이유와 동 --- .../swift-signup.xcodeproj/project.pbxproj | 8 +++ .../UserInterfaceState.xcuserstate | Bin 62476 -> 65625 bytes .../swift-signup/Base.lproj/Main.storyboard | 3 +- .../swift-signup/NameTextFieldDelegate.swift | 54 ++++++++++++++++ swift-signup/swift-signup/NameValidater.swift | 60 ++++++++++++++++++ .../swift-signup/ViewController.swift | 15 +++-- 6 files changed, 133 insertions(+), 7 deletions(-) create mode 100644 swift-signup/swift-signup/NameTextFieldDelegate.swift create mode 100644 swift-signup/swift-signup/NameValidater.swift diff --git a/swift-signup/swift-signup.xcodeproj/project.pbxproj b/swift-signup/swift-signup.xcodeproj/project.pbxproj index 5d5d239..47cdddb 100644 --- a/swift-signup/swift-signup.xcodeproj/project.pbxproj +++ b/swift-signup/swift-signup.xcodeproj/project.pbxproj @@ -27,6 +27,8 @@ CE366CB32615AF7C00506D3F /* PasswordValidater.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CB22615AF7C00506D3F /* PasswordValidater.swift */; }; CE366CB82615B9EE00506D3F /* PasswordConfirmTextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CB72615B9ED00506D3F /* PasswordConfirmTextFieldDelegate.swift */; }; CE366CBD2615BA3400506D3F /* PasswordConfirmValidater.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CBC2615BA3400506D3F /* PasswordConfirmValidater.swift */; }; + CE366CC22615BD2400506D3F /* NameTextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CC12615BD2400506D3F /* NameTextFieldDelegate.swift */; }; + CE366CC72615BD3300506D3F /* NameValidater.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366CC62615BD3300506D3F /* NameValidater.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -73,6 +75,8 @@ CE366CB22615AF7C00506D3F /* PasswordValidater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordValidater.swift; sourceTree = ""; }; CE366CB72615B9ED00506D3F /* PasswordConfirmTextFieldDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordConfirmTextFieldDelegate.swift; sourceTree = ""; }; CE366CBC2615BA3400506D3F /* PasswordConfirmValidater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordConfirmValidater.swift; sourceTree = ""; }; + CE366CC12615BD2400506D3F /* NameTextFieldDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NameTextFieldDelegate.swift; sourceTree = ""; }; + CE366CC62615BD3300506D3F /* NameValidater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NameValidater.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -142,6 +146,8 @@ CE366CB22615AF7C00506D3F /* PasswordValidater.swift */, CE366CB72615B9ED00506D3F /* PasswordConfirmTextFieldDelegate.swift */, CE366CBC2615BA3400506D3F /* PasswordConfirmValidater.swift */, + CE366CC12615BD2400506D3F /* NameTextFieldDelegate.swift */, + CE366CC62615BD3300506D3F /* NameValidater.swift */, ); path = "swift-signup"; sourceTree = ""; @@ -305,8 +311,10 @@ CE366BD42611BA8D00506D3F /* AppDelegate.swift in Sources */, CE366C5A2613495D00506D3F /* PasswordConfirmTextField.swift in Sources */, CE366C2C2611F9CF00506D3F /* IdTextField.swift in Sources */, + CE366CC22615BD2400506D3F /* NameTextFieldDelegate.swift in Sources */, CE366C9D261597BD00506D3F /* IdValidater.swift in Sources */, CE366BD62611BA8D00506D3F /* SceneDelegate.swift in Sources */, + CE366CC72615BD3300506D3F /* NameValidater.swift in Sources */, CE366CB32615AF7C00506D3F /* PasswordValidater.swift in Sources */, CE366C6A261401E900506D3F /* ButtonManager.swift in Sources */, ); diff --git a/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate index 0ac2f339ec1e71fc584bd9c0c1ad06c15815fb2c..bb1038e7988b9c20ef2f30939ca4032ba0214ad2 100644 GIT binary patch delta 29903 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 delta 27848 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 pm5|b)gq5h$q_ilqvR^r<99EA0_gB=V%YXUeg8v - + @@ -189,6 +189,7 @@ + diff --git a/swift-signup/swift-signup/NameTextFieldDelegate.swift b/swift-signup/swift-signup/NameTextFieldDelegate.swift new file mode 100644 index 0000000..d7f9e2e --- /dev/null +++ b/swift-signup/swift-signup/NameTextFieldDelegate.swift @@ -0,0 +1,54 @@ + +import Foundation +import UIKit + +class NameTextFieldDelegate : NSObject, UITextFieldDelegate { + + private var validater : NameValidater + + override init() { + self.validater = NameValidater() + } + + func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { + let text = (textField.text ?? "") as NSString + let newText = text.replacingCharacters(in: range, with: string) + + let messageInfo = validater.evaluate(with: newText) + + textField.layer.borderWidth = 1.0 + if validater.state() == .valid { + textField.layer.borderColor = UIColor.systemGreen.cgColor + } else { + textField.layer.borderColor = UIColor.red.cgColor + } + + NotificationCenter.default.post(name: NameTextFieldDelegate.nameTextFieldInfo, object: self, userInfo: messageInfo) + return true + } + + //MARK: 선택이 되면 파란색 테두리 + func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { + textField.layer.borderWidth = 1.0 + textField.layer.borderColor = UIColor.systemBlue.cgColor + return true + } + + //MARK: 선택이 끝나면 상태에 따라 테두리 색 변경 + func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { + textField.layer.borderWidth = 1.0 + validater.exitTextField() + + if validater.state() == .invalid { + textField.layer.borderColor = UIColor.red.cgColor + } else { + textField.layer.borderColor = UIColor.systemGray3.cgColor + } + + return true + } +} + +extension NameTextFieldDelegate { + static let nameTextFieldInfo = Notification.Name("nameTextFieldInfo") +} diff --git a/swift-signup/swift-signup/NameValidater.swift b/swift-signup/swift-signup/NameValidater.swift new file mode 100644 index 0000000..3e18814 --- /dev/null +++ b/swift-signup/swift-signup/NameValidater.swift @@ -0,0 +1,60 @@ + +import Foundation +import UIKit + +class NameValidater { + + enum State { + case begin + case valid + case invalid + case end + } + + private var currentState: State + + init() { + self.currentState = .begin + } + + func evaluate(with text: String) -> [AnyHashable:Any] { + if text.isEmpty { + self.currentState = .invalid + } else { + self.currentState = .valid + } + + return message(about: self.currentState) + } + + func message(about state: State) -> [AnyHashable:Any] { + var messageInfo : [AnyHashable:Any] = [:] + + switch state { + case .invalid: + messageInfo.updateValue("이름은 필수 입력 항목입니다.", forKey: NameValidater.MessageInfo.text) + messageInfo.updateValue(UIColor.red, forKey: NameValidater.MessageInfo.color) + default: + break + } + + return messageInfo + } + + func state() -> State { + return self.currentState + } + + func exitTextField() { + if self.currentState == .valid { + self.currentState = .end + } + } +} + +extension NameValidater { + enum MessageInfo { + case text + case color + } +} diff --git a/swift-signup/swift-signup/ViewController.swift b/swift-signup/swift-signup/ViewController.swift index 9932938..aa056ee 100644 --- a/swift-signup/swift-signup/ViewController.swift +++ b/swift-signup/swift-signup/ViewController.swift @@ -35,6 +35,9 @@ class ViewController: UIViewController { @IBOutlet weak var passwordConfirmTextField: UITextField! private var passwordConfirmTextFieldDelegate = PasswordConfirmTextFieldDelegate() + @IBOutlet weak var nameTextField: UITextField! + private var nameTextFieldDelegate = NameTextFieldDelegate() + override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. @@ -42,7 +45,7 @@ class ViewController: UIViewController { NotificationCenter.default.addObserver(self, selector: #selector(idGuideText), name: IdTextFieldDelegate.idTextFieldInfo, object: idTextFieldDelegate) NotificationCenter.default.addObserver(self, selector: #selector(passwordGuideText), name: PasswordTextFieldDelegate.passwordTextFieldInfo, object: passwordTextFieldDelegate) NotificationCenter.default.addObserver(self, selector: #selector(passwordConfirmGuideText), name: PasswordConfirmTextFieldDelegate.passwordConfirmTextFieldInfo, object: passwordConfirmTextFieldDelegate) - NotificationCenter.default.addObserver(self, selector: #selector(nameGuideText), name: CustomTextField.nameState, object: nameText) + NotificationCenter.default.addObserver(self, selector: #selector(nameGuideText), name: NameTextFieldDelegate.nameTextFieldInfo, object: nameTextFieldDelegate) NotificationCenter.default.addObserver(self, selector: #selector(buttonState), name: ButtonManager.buttonState, object: buttonManager) registerDelegate() @@ -53,14 +56,14 @@ class ViewController: UIViewController { self.idTextField.delegate = idTextFieldDelegate self.passwordTextField.delegate = passwordTextFieldDelegate self.passwordConfirmTextField.delegate = passwordConfirmTextFieldDelegate - self.nameText.delegate = nameText + self.nameTextField.delegate = nameTextFieldDelegate } func registerTextField() { // self.buttonManager.update(textField: type(of: idText), state: idText.currentState) // self.buttonManager.update(textField: type(of: passwordText), state: passwordText.currentState) // self.buttonManager.update(textField: type(of: passwordConfirmText), state: passwordConfirmText.currentState) - self.buttonManager.update(textField: type(of: nameText), state: nameText.currentState) +// self.buttonManager.update(textField: type(of: nameText), state: nameText.currentState) } //MARK: @objc 처리 @@ -104,14 +107,14 @@ class ViewController: UIViewController { @objc func nameGuideText(notification: Notification) { - guard let text = notification.userInfo?[CustomTextField.MessageInfo.text] as? String, - let color = notification.userInfo?[CustomTextField.MessageInfo.color] as? UIColor + guard let text = notification.userInfo?[NameValidater.MessageInfo.text] as? String, + let color = notification.userInfo?[NameValidater.MessageInfo.color] as? UIColor else { return } self.nameLabel.text = text self.nameLabel.textColor = color - buttonManager.update(textField: type(of: nameText), state: nameText.currentState) +// buttonManager.update(textField: type(of: nameText), state: nameText.currentState) } @objc From 6507ff6e47bd629c7fe84d1ee19979d11824cd7e Mon Sep 17 00:00:00 2001 From: BMO Date: Thu, 1 Apr 2021 17:42:08 +0900 Subject: [PATCH 05/18] =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 기존의 분리 안된 객체 파일 삭제 --- .../swift-signup.xcodeproj/project.pbxproj | 20 ----- .../UserInterfaceState.xcuserstate | Bin 65625 -> 62292 bytes .../swift-signup/CustomTextField.swift | 72 --------------- swift-signup/swift-signup/IdTextField.swift | 34 ------- swift-signup/swift-signup/NameTextField.swift | 31 ------- .../PasswordConfirmTextField.swift | 52 ----------- .../swift-signup/PasswordTextField.swift | 83 ------------------ 7 files changed, 292 deletions(-) delete mode 100644 swift-signup/swift-signup/CustomTextField.swift delete mode 100644 swift-signup/swift-signup/IdTextField.swift delete mode 100644 swift-signup/swift-signup/NameTextField.swift delete mode 100644 swift-signup/swift-signup/PasswordConfirmTextField.swift delete mode 100644 swift-signup/swift-signup/PasswordTextField.swift diff --git a/swift-signup/swift-signup.xcodeproj/project.pbxproj b/swift-signup/swift-signup.xcodeproj/project.pbxproj index 47cdddb..952998f 100644 --- a/swift-signup/swift-signup.xcodeproj/project.pbxproj +++ b/swift-signup/swift-signup.xcodeproj/project.pbxproj @@ -15,11 +15,6 @@ CE366BE02611BA8E00506D3F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CE366BDE2611BA8E00506D3F /* LaunchScreen.storyboard */; }; CE366BEB2611BA8E00506D3F /* swift_signupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366BEA2611BA8E00506D3F /* swift_signupTests.swift */; }; CE366BF62611BA8E00506D3F /* swift_signupUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366BF52611BA8E00506D3F /* swift_signupUITests.swift */; }; - CE366C2C2611F9CF00506D3F /* IdTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C2B2611F9CF00506D3F /* IdTextField.swift */; }; - CE366C3426123A5A00506D3F /* PasswordTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C3326123A5A00506D3F /* PasswordTextField.swift */; }; - CE366C3F2612470800506D3F /* CustomTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C3E2612470800506D3F /* CustomTextField.swift */; }; - CE366C5A2613495D00506D3F /* PasswordConfirmTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C592613495D00506D3F /* PasswordConfirmTextField.swift */; }; - CE366C622613EEDC00506D3F /* NameTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C612613EEDC00506D3F /* NameTextField.swift */; }; CE366C6A261401E900506D3F /* ButtonManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C69261401E900506D3F /* ButtonManager.swift */; }; CE366C8E2614B17100506D3F /* IdTextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C8D2614B17100506D3F /* IdTextFieldDelegate.swift */; }; CE366C9D261597BD00506D3F /* IdValidater.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE366C9C261597BD00506D3F /* IdValidater.swift */; }; @@ -63,11 +58,6 @@ CE366BF12611BA8E00506D3F /* swift-signupUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "swift-signupUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; CE366BF52611BA8E00506D3F /* swift_signupUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = swift_signupUITests.swift; sourceTree = ""; }; CE366BF72611BA8E00506D3F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - CE366C2B2611F9CF00506D3F /* IdTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdTextField.swift; sourceTree = ""; }; - CE366C3326123A5A00506D3F /* PasswordTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordTextField.swift; sourceTree = ""; }; - CE366C3E2612470800506D3F /* CustomTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTextField.swift; sourceTree = ""; }; - CE366C592613495D00506D3F /* PasswordConfirmTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordConfirmTextField.swift; sourceTree = ""; }; - CE366C612613EEDC00506D3F /* NameTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NameTextField.swift; sourceTree = ""; }; CE366C69261401E900506D3F /* ButtonManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonManager.swift; sourceTree = ""; }; CE366C8D2614B17100506D3F /* IdTextFieldDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdTextFieldDelegate.swift; sourceTree = ""; }; CE366C9C261597BD00506D3F /* IdValidater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdValidater.swift; sourceTree = ""; }; @@ -131,11 +121,6 @@ CE366BD52611BA8D00506D3F /* SceneDelegate.swift */, CE366C69261401E900506D3F /* ButtonManager.swift */, CE366BD72611BA8D00506D3F /* ViewController.swift */, - CE366C3E2612470800506D3F /* CustomTextField.swift */, - CE366C2B2611F9CF00506D3F /* IdTextField.swift */, - CE366C3326123A5A00506D3F /* PasswordTextField.swift */, - CE366C592613495D00506D3F /* PasswordConfirmTextField.swift */, - CE366C612613EEDC00506D3F /* NameTextField.swift */, CE366BD92611BA8D00506D3F /* Main.storyboard */, CE366BDC2611BA8E00506D3F /* Assets.xcassets */, CE366BDE2611BA8E00506D3F /* LaunchScreen.storyboard */, @@ -300,17 +285,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CE366C622613EEDC00506D3F /* NameTextField.swift in Sources */, - CE366C3426123A5A00506D3F /* PasswordTextField.swift in Sources */, CE366CB82615B9EE00506D3F /* PasswordConfirmTextFieldDelegate.swift in Sources */, CE366CBD2615BA3400506D3F /* PasswordConfirmValidater.swift in Sources */, CE366BD82611BA8D00506D3F /* ViewController.swift in Sources */, - CE366C3F2612470800506D3F /* CustomTextField.swift in Sources */, CE366C8E2614B17100506D3F /* IdTextFieldDelegate.swift in Sources */, CE366CAE2615AF4100506D3F /* PasswordTextFieldDelegate.swift in Sources */, CE366BD42611BA8D00506D3F /* AppDelegate.swift in Sources */, - CE366C5A2613495D00506D3F /* PasswordConfirmTextField.swift in Sources */, - CE366C2C2611F9CF00506D3F /* IdTextField.swift in Sources */, CE366CC22615BD2400506D3F /* NameTextFieldDelegate.swift in Sources */, CE366C9D261597BD00506D3F /* IdValidater.swift in Sources */, CE366BD62611BA8D00506D3F /* SceneDelegate.swift in Sources */, diff --git a/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate index bb1038e7988b9c20ef2f30939ca4032ba0214ad2..1a38065402a09c8b81231b10891cb32dbc8ae65f 100644 GIT binary patch delta 26630 zcma%@1zZ%{`~P=xcXp?cl9omqq$Mnn21QUxLP7)_JjGeo=&*@$dKwy8!S?G<{c z4eE%xqh81b)Eo6jgV12K3)&U!j>e$zXb-d}nt=93GtoS>2px!)qGf0mT8q}93RH;> zLx-c|(8=gbbS^p%U5GA4m!T`sRp>f&J-Qv;iylIcp~uk^=o$1+^a6Sry@K9AZ=#RT z7wB8`Bl-#bjDA;O7=~jKjKUbq05ip`Fgwg1bHJQ2cgzFx#(b~57F&m{$2MWx zu_7Ffgi#T<45qL_(}XMeg(gUKfs^h zFYwp+8~g*o5*)!3Iz$^nm(U~h2?N5AFd?i6Yoa~jNO%$*2rnX#2qHQYU5HpBj)*6E z5Iu>$Ltp3#7bfnv6@hi1kD> zv4J>993l=AM~I`uG2%FJf;dN9B>o~E5|4<-#1rBv@r-y*ydYi^Z-@`XH{v@fA|)h6 zN=X^XlX_%Z(wwv+t;zPJBk4{ClObd$vNPF*>`KOvv1A+>Pxc^tl1XG=GK0({v&dpn zPL?Rhfn+IJMwXKmWF=Wc){;sRkVD8xq>7wOP9dj~)5z)M3~~-Rms~(DB)5_~$z9|= zazA;9JWL)ZPmpKGv*ZQxB6)?pO5P-Ik@v{^?c|HI6@pJju-b4CyP_W+2VfU8gZ?-PCQs# zFK!Sk#7Z#`4-tebHt0qOT;_GJH@-iyTyCNd&T?2`^5*ue~6EWPm3>z zFN$x7Z;Bs^ABn$9L=r@TN-zm7AtacD7 z9K};QR2xc{(xci^7F0XRfoe}VQfX8sl||)JdDH-^kSd`DQWaDsRYTQM4U~c!N)4k% zQNK}Rsd3aKN<~ehrcoYCE-$+D{#zj#9^{bJTh2BJ~$_ ziMmDIran*~sZZ4BcGMT@EA@@~E)_`;DIuk$jFgq?N%f^>Qgf*Va#0mcS}1x+Q>3ZV ze$pIit~5_7mzGF}OGijYN=He5la7}DE*&EsD;+1DB%L9hDV-&4lrE4im#&bml&+F) zlx~t9m!6QGl%A5FmY$KGm7bHHm;NceB)uuUCA}?uD19XTTlz}+TKY!%Mfz2yE7Ozd z%M4_OvbHiKnX$}7W-4nJE3=om$XsPUGGCdWtdp#>thcO>ELoN!OO>U`(q(;R8L~`S zj;v5tBrB7Z%j#rQE<1|5& zG)r@|Ep12J(++fd+L3mmooN@^mG-3l=>WPD-I7Bh+^%u;3zvz9r?9AXYLN0_6`G3GdPf;q{YV$Ly_nVZZl<`MIl zdBVJA-mp?u#?maqvMk5)tPb0T)nyG?bJl`w$J(*>tQ+gjda#~s2eu;{$o6Ct*j{WR zo5c2J`>@Gu3Y*Giuz73|Tg+CnRcr&RP_R?jsq8d%Iy-}%$;krlUCyp$ z*RfmKZR~b-KYM_^%wA!yve($_><#uNdyBoz-eDiG&)FC3TlO9Mjs4DvI0;8_7F;{d zlC$EhIUCNFv*YYJ2hN%6zeY_kjD%ec`@x-?;C*h(~yo$9R&bcquRAIbNSP;0<{b-i7y2@SeO6 z@5^`O1NlyTXFik<<0JVfK8}y)d+~kvG(MBh;rsJNd>LQPSMX!_vHUoGJU@Y-$WP)` z{A7L#Kb4=xPv>XwGx=HkY<>>ElwZa-@yq%3{0@F6zl-0^@8S3I$N1y?3H~Dg7k`Pr z%-`kj@elbAyx~Xw6aSh2q9fA5bZ{L)htlD6baf0=#Vc` zQJzqdRgs&NRaB7U(4NQ7it0pzk@ZNk>Th!kYyq-C^}@Wp^Cre5`yA5F8*n05JzhSAfI< zq>pmiU#LE6fEuE0MI35`8lxttDQbpXMlH~Gs3mHJTC3h#t;t`m+@KUGmnt_aH!0UE zH~xuCL#9JTW*{?BThtDjgUl7pQ?5}iQ_fQUrt~^1V&T=CkYx)|XVe9CRW>PCDp&mw z65hcRqApji5QNl;$WcoNB`i~&32v)5u0;_vKrPv7K{D0fo%N(>2-*p`tX!*Hr?Rx` zOR056yP=_~Xq&b@!$gVV=Q*v%?NRGH zS->~;uv)@>Dyd75;(xu# zQjPl?#Qhx|193O0aSuY=)5=r7;*Lirw0P19<)PNJQv}+n=rnY?^04x#^4L#WOLR7* z-K0FC9LGxp2rHqW{tMV5HQ4c=zSN}VISF~LJM?eG(xhfNsj}!``45(6HOnT*vIX4= zS^iYBoP{jclvjUc*@5nCVY#e4*P3OYz_K4bfc~L8ue_-I>nBSydIYlksk|Uq&IDQx z$yEV|w)X6Q*z2qs>yj3WLoceat|-?jMHzfQl}E>LRj#9%;-{@Hs`;*D@LX|jc{z-S z4q4eHl@$T)|LLi>)VOyct||He;@(!{-hjBvm5+YKeT+V7!F`~-*&6qyfcv)<`U-um zyrsOWy!Vs$7Wy9Y-d5fbcr8>)R|^MT`hT-xA~oy%AFLRmW__q(%~!K3T`hmIVuYIY z;XlYQRv^Q4&~}(ErU%KMtI3`~vUke2zmQ>uSlbq|*UG1@$S^ZVhM8j)SUcr2iJt)XSjF4|l{e1s-_B zzXA0BFsPuS|GyMJY`U6$7Nnnp%@yeNHS}!+dNY8S{z~5nQw?=J3=m_0=(eJF z#g+>A%djSFIY9IPVhE77Kk=tys|6N)fEWn$=Bm^F=IwdrKj=4W=#8}WGHi#2-UNCr z-z80T!(XSBjdy6EP5#x!2T?QZFm?n|9>b1fCjerl+yD?qfLI8aT>#P^Ae~#~8`vrA zw3gEzAnjUlVt)#l7qE-iUjVTL2$anBC+0!*L(}m3uyTWGN9Tb9RX1GpU9p=Q8XIBz zk4i6JUOBKu0qmaU0K1>Kk2Sas5ZBT!Mpe^Mx0Q__Yj7RTi5MXd!d_!vMUG9_8|*Fi z4ttM%z&>K1u+P{RfH(of86YkIaRrDQK->Z10T54sbZEl9iEM=*9K|uwJouXgh?lan z@Bk&}^32o&Ocr5e? zJPwb?djKR1AmIRs_~8+Fi0GZ*_}!IQG7QvvgB|p>c@UniF?r+0n&%$RL1J z1EdBZwE(GWB5+NtA|#qvMbH2ltc_KQAF*oKk66_&w`)mGZZjWfk92Db0~TQfkouN@ zMVLZAAk5I&!UB*6{ zz*s}Thzf(&P?fUD#E0-E{M5mS@Kpz+;jIo(+VsuQHXC#0`4#=uO+F%+2vMzzXp1c% zI;qw~bZ{fO65%4pMMO6uln5ib1LQY=j0VW>02#B0h#(?G?}%uCj0MOfWimh}t8^km zoQMRXk8n;eB9TZUV6h(uknsSS0Fa4`pl6P4pvjMUIUGEITTd zB+9A{F@Pu%HWUJ6N+SV{KUEbNWfDM?ijFKG$_QweX#kn24AII{MbwH679w(_1R1ET zRn{p7FC^+j4g`!H)0Kt*nW35(Wnx7PAx8Y;u#xaEh%`$$Y_{rTlz|>GPQ(%8i3vix zIVY6kiU@+$aho%dk`$)fRP>S0PuuEMPX<@ zIsh$)142X4vFHSJ5*!SghR#4|p>xnh=x+2p9QOGOy^JAnbf*nwiP>OIm<#3xM|S#P zxmXb#u~`nsXja2fnj_dP>^`haKVaW+1jld!4!U&4!|((Jo`mOWDxe=-IwdV#J1xI( zsQz4yaVHU~^w@-$%8IP)qTFtfZ6Ps<)52n4`FMc{xSRBd{`j3qV_J4KF5iA}_2VhgdA*hXw8b^rvXYbyY<5+JL95aQMV zWbIO77qOezL+mB?5&H=kWY+-%mXVVH`2^5a0AC33EzR)>a>Ri+Nt_lO=M+HJHxg$6 zvO($8D$o-bG$F59#r5tLuf@GY+!Q%3AubbFh^xdk;yQ5yAR7U)2_TyRvIQVp0kUlg zaf`T3+#&7~_lWxd*$xo+s5=3&3m}I8a#$$mE~?H+y3KPEjS-x9N&Kzao@Cj9cq^3k zcL0IC73YbM$XVn#bgoatXW|R-HMu;uD7T-`UjvYR0ND$WJpeffA1%j}L`YoZxPU}S z3?Tafa$o^TU^fBs2S998<9j>dBuz4^UA-+yk|jBj0{+=f)!x#eM++0FL$(n)&YutI zHBpY#Ck=kxU__cgrAU}JA8jN}0do8orASMSQpZ$9eFEE%Hl&?!FpNJZ8gU1q+-~h- zn@Bp5E^sprgH}!>=?aijKkw&3`idMElb&P;(u?#aVg7a+AkZLZ0dfu?=NFTHq(A9H zb|eD<@+UwZ!EFF}0+8pb4#|ynWH%B__I1xnv$dZUN*rK<)tK?jo{3SwIdTVd#PN4m9-xfIL(^Pub{BRtYy61dzwdX(>_R zJ}y;}EjjAh1LSEV*#MAds&lEXoyno(Xy{zzFmgCKf*eVXB4Mz30g#sf z`5Pdw0P-3jZe%oLoV!Bw^9|43Mt?`3_J7 zpcp_2fQkW10aVsRt|8Zw>&W$FGr57>NNyrGdjOOHs5wC4A6)^O2+(|h)&TT(fX?~V zYg(E;Uz#VSMo4%=D^c~u2^Fj4yR0KD7RPD|PZ?)@~W)})~1*j4-BU66pVj)T%bK$!a95y8FS~oI3*OM|lB&;In%(-WyP92eGum$x zYD7LD{}%LoNIoJTlTXN}tSdohCORVURLx$qi6g z+%)YN)T9{+^hPqpBs8rUY7bkd>gJ1BDl}i-i)mp|-T|nQW;Km((_&R|8?mm)0NUF| zyTL$gq^{=0ZG~zcHHFo@*hI(!P%~9izDc^co!AjRx7bo_CAJpZh;7AoVtcWJxII8E z0NM_qmH@Q^u+f3q0Mr(sb^x_+5<6))#BLf6aR-13)wa+cLt$gJg~LtF(ODcKaC8D_ zdo4#-$bqba85mq(Bg{*^Xp5*gQXCC48gUdrof^e40Cg5JngnqVaW8d7BTf)98q`G~ zNm7%z{v%=0K_yxNQpJ5W0;H=2aBp>*YF%a9ba9SYE(nk-&J*X0`-=<21H^^mB5^T5 zJpl^Aya4JAP#=K$0@M$n@YVrM;*u5t%3A~&1kjFJ0fK%A(78o`p@IOz02-(jVB~)a zFit!{5MVq&gB!&Y0UDxC>BLjS(;H77iI>D%0v)zLKnnmm0HB2cEdnU?XgNSj06MTq;-?{%1ZqenuymGcNnsA% zQh*0(NTUT(SP;v!r1Aer+FOz=kV1tk8YNKSN)2gWNtW8Cl1#NttNsVXRFW?lpth-` zKuucxKL;2|21;rL(o#v8q+C)VsgzVn21%+VHL5eYX7+V0M2Z%op#UAKB^v&N=r;|~ zc!6jFK!<6GRR2jdQ!-m1ng!4ijgmP49jPH|lq?c#2fKy0n`FCWhw5g2TW5eyZj$V3!P?h?br7Iav{=)AV9nBC zofWXo0d%Ss>%xCxU6b4pu&x7idZXkfKxb&M?n)jASoZ|1ng53MO!88L1+x{1HTxe} z?%jl@>TLp@?8}?z|?_4G)US?kbigC1s<2Jjz=Acq`!JQLym9DsQE#W37pT za-zD59M|xMupjvW@P_el>u`W zycwWt)I;XyyXyZ;b*LOoKC@2M*(0ab<^s*;W|eElDAm*LI(n@dO_W@-bEB$VXq0ME zovHqhp$w{Avukq(pR4ZuZ`jGHoCou*j;Pigu{DFwYc)PVnP~=QTi>Q$bL936KE35y z`oBEJ5Y7Ibs@TE3TRr+n&F0a5c+_9QBNaf8KVY=D_`G^y~Gy zt*$Xuv+IuxJ_lZ-yDFx^CY_o=Erf1Q&7@{gv#B}MTxuRQpK7EQ02Ee;hXHy7php3E z44}sWdIF#)0eY&561qL$54DVHLf^yRD*<|1TN+@6co_}|!ldeox->*kTZGcE6`*Id zrC|pw4b)C*m#_d7)}yfa3u{;)+Vk2rAN2=y2$pmT`qQ6{6nv5k>XJ?!r%nka#g>BY zWmwH#TtJCKQyTbCa0o%@%OI4S>RUa|@ui0Sfcjy8yih(ECl)^A<5)QLm{t zP>go~eV`TN2|!;0^lw3pR~j{>C{#m=0rX*u8d8`sFOrI-5@7)-EUk|84sV3~ahKfjy)ndMY>6wx0OQms_w*ZAm?*aM&pdSJH380?=`URk0o21?vbg92I z0QD5vN`nCUtpy!J07k<8+|B?KtI1Vk21$a@?^@~@NR7^x#t94TA;d(Q)il1lmN-$` zTOdvX7}_Z9129Y=Hc69a2*l}-7{k@XnUEMG;6tnW54SOu=1Vm-vQ%9oV-f)=Q$WH9 z0V#c;RH%@prP4BKxwJxBDXo$Yl2%J=044>P3}7_C7=W<=;{e73Ob1|XnxriiwNxPu zkOBw_Bblxi)DVIK%v2yXQD|Obzxs2rVlU!XyPcI z&;rkv&J}>?0IY4JbRNKr)W8d+OVs`@T`c%JW-Rb5Q}dXpE{-%am9CbqQ+u^^t>D#| zdFulN;LXy#0`L~;R_QkBcIgi3PU$Y`Zs{I?wF8(Xz^njf4KN#kK}GEVW)CojCh5Kw z%O0efq=zB!QGm7A0=vKx4&X301n$t{)UeKOlwJgwqZatG0DMJyRagM#1TbgK8WJ1w z(OTj=(t85&U4XeZO78>AO(5>|So%yb@e{$s?rIZ17fcLW>;K}^_+_5dUhb{*gGPz> zY9+h`C7!FL@(@g)_Dv=cl=vIJYS=JYmH?X#FgTK>ZcWH?1*=aJ&BK(k0s$3viBkaU1&waj zVk23xtVH0I11zagHV|OF1>OW%g=`SSkyQ#d?<3e;RxQ{ZHh2ET=Hx`})f!|#qk>Yc zLaLxbwOXcRp?TR?Hc~cGP+^qpH`!>}@3Jwnv9fWp@v;d3O9xnAfMozI6JS{YgBbk) zmIJWdCfTGG6{gCjNw0`(WitVmr&Xapz>1+O3(hZB%MdDCBFL~5VEI}ZmO~jRGijW# zz&sBIH_iG-kDhFutXWWDJ-`YYWg7rCKu|#yGn~>D1c04&P=FnR07Vc+RWQ-aT1&iN zc2Gn7hnl!VAl{)SE)s}UyN8=}DFs*=z{&wu0kBGdRRL@ez^VaO(niQ@y_3N**eH7su=+;XM}ReG?E94#3HJRa z;K2bU{{=K6;3@yzzDHWFMvG~wnwF;2v_l{*ji_mrs?yO$={#)=%}eXhZD?IukJhIR zXhXU!Z3M7k02>al5da$ruu%Z}4Pc`I_B+7FG|?s+4QLCx9c?MHrD60NtJMHH#uR`} z70f$LEkbwN4T?a!18iK22y_Q10_`Q8CM*CO4;@{zhHl(5ZA9olf_qGid0-&_`zhY&O7P^)VMSndMMFPXO~0bmS!!#~q8AJFv*|hXTzVcopKhcV z&NlU*KV7maeTd?*X zjmy*91pMs)+pNXkC0Khm>M1M$+aiQ-xPrEJ);{(@`mi9uA%Jabq>lh>yV}+#=+lC& zPYSl)p|O>aXsiwV6KNV>2(0A#3^nLmP{g8e{ zKc=4mY(Kyb0PGKd9RwJ>>tTSwyTTg!SQGuMh4ydy75y60z6IEEE$u0Qod?*T0__Ej zZ!-v_Wl(^fXrW~YbpdC@QZWNNaUTH;Cj7!0@)ox6G7Q5(UWNtO=|+YJ*co+|#pp4H zkcZJ1fZ?!+{{p7101R{czf^=A6vO^xzwoC)S-e^%_!2JRzoT4xyb}U{6Kvb4w(VyP@H%F@0KA@QW;QSznN7@QW(%{G*#>YC zz!89>0LK811DpVGrW7s)xTJ~M(E_}u#kL0kPPG8zGOcZKzQwku1zI;5q{TeSsh61pdCvTjsmK|BiXjd|*B@pP0|g7v?MT4ZyixxE{du z0d4?rLx8shxDmjO0dCU7iZuKz&JrvsvSlRzhwTjE2f(>r!V}sFf7&p^}N zUdOD3pM^6s7O_UGv9JI*MGUvltf9dx_>L`)&RVk8PzTlu;FgW74Zy7g9s05ktP><+ z+Y5Jrtwa9>th1m498vkF4m$dA)}356O-nvWdtoouSFH&PM@yk54p0-;S*?kU+9%i` zwmZ~>4Q4~wPHbnk3)_|L#)h(C0Cxnq6TqDT?gDUEfV%YfAN|FgB`M0?#+GoyZ3j{Ix1Kg*P9RP4&wg0nnwp2i| zWd}kf0PY7-;LH?gUN|!an%9&a#KI{XaGD%jqh<~Gp99iaB?|{mn^?dOVTZEA*x~F5 zb|gEB{SDxO01pCqFuzd6e@)|kv=9A~eI-cnH^9>y+1CK?t1_C85!UzWaqe>m{ zx^e9xEeDH=yoHu?X`$uZwX`K_+Ab}$oHqxHWFzMT@X|)k58!12Z5kKIg+LfCNGR)Y zB*lLL*GVYr75`e+$s+4c?!R;+aoxE{jTjMXF$O^~xK3)dD%6(e;<*$-j2>K1E`jUC zC2~nzZ>|rQ4DcF&*8;o_;DZ628;LgnTmf(;z(Et2+9E~+Xyo9%HG?GF z5N^2I`rI(J^+yRjBh@^=sSKKJOu4Zf9PNa~og1$P9@F{&we_cR!ki;+8aJJr!Oi4m zakIHO++1!RfYX=o@c^Fy@QDDQ1aMfSCj)#6z^68GjV-{7xh3dq2;2nlXREeAP4Y`LLoPe;5d&E8Fo^VgOXWVn{ z1@}@FzfvE@{?*I4SKMpv4fmFN$Gzu1a32A_2Hfhq z`4m6#iv+y8MuKe_{KjgR>V9wrrK)br+Mk{Oytn3n9jekTiSTV29aX_L9o2@dU4M4s z^8uPec4hFZRGqf=RQ27K-s%D&n!S5eC$?>Aby7FY=6xCb8udv}w`a6EDMGXNz%O?_ zzoTobLt-_D9E68dspjpBQ1CtYp1xL{o`_~P*eBQ4c z3ituPZYbu3?jv3*2l%N*9v1i0s?uFH`Ftg>6d5e%tN1~DHDANm@^$=RzMgO36#zdA z@N)n^5AZ($egWVY0S=w^62LD5{K|43@IyonB3phqKY}00kK%t5IRG3ch1ZmDmJ7h4 zJKq2}bmv(j&*c}u*s_@VfxN2k`p~`Gx!C~fLVwcK- zqMVlU&!6Pa{>y3nIsQBk^?3#G*8qP5=U#Q1@Ld`X`woZ4yu^}n!7*;QCVCzRp^j#Hn>PfiT+SrN2)`^Kp<>u)L{UD zDV@}TLx=xyq~`y6q9gO+6msD;5FJBg*>X4wyf3;Hn~M#Eubn-BZ`Y2&x&R~zzV~?* z4z|MKRQUGUBlv>tDS)8LX(EZpNMxlDIg30*0iqC54^fgRP1IK^ha(RFe$HSr{D8rH z_yL1O(kA!`gVoZt(u>mP($6xfjFz!7Ue*SFpuhlroWNezUgiY9O5iT@lzG7~6ZpaY z+)=O>@v7__ZA^Q^exp?Qm4Jcp3jq~$6}+^J%ye|D`wEMV4ul6*k7`c zUQ92gx6voycL3fn5=I}kw1b&wCWc92a+!SiK7S!>l9n*F%wVPgzS%znzSTd1X@W29 zUuB-d7xGP58~6&o1MA2-v)-&P>knVS4}$r75<39qwR71O>`HbOyN2BY-=;s#UV`t@ zKj2UW%zoN%dYmE5YfLyFE`&?t`f{0Vm^KD&LfVA2DQR=Q&9yeK+kDa$>+0zm=(g20 z)-}~N*KMckqU)yXq1!>%Th~|DU$>)flI}p=(YlLuH|U<%y`cM-?mgY-x-WHK>Aul@ zr~6$G(ZlozJ+U68XQ|g+uTF2a-eSFFddu|`EA_VO?bAD@cR}x}-XpzNdaw1~>V4B^ z^!4;j^*iW$>G#&p(J$05)-Ta7)vwmC)gP?ips&+~L zlR+1QZU$in;RcZg(FU;w`340Bg$Bh2B?hGiI~`)6b8Uxg26I_9R?Q+ z{#F>$h7N|^4U-H97%B`^hRY3`4L2BWGTd#r$8ewFF~ie_XAQ3yJ~Vt{_{{L7;VZ*8 zZQHiBZ0p?CwXJ(w&$eD|ecJl9EonQY?MWlVsH0IgqaH@RjFOC!jZ%%$jp~d>8I3g> zZ#283fR zd8YjprUOh%P0LLyO$V9QnEq}$*|f=Yh3OX4^HOD&BmIIH=AgtGW)~qq}e62D`wZsZkXLNyJL3G?3LM9bIhDD7n@V& z*56V>Q@noYhLJJyyr99$P)NdT#a7>Xp?St9Mo(tUg(D);iX@*80|l)<)J=*6ppG ztX-_#tUauQtvgwFvF>Kw$2!+K-@3rM(7M{X)_SmYgSFy!>*>}rt!G=$wf7^}#Adk7Mw>G>mu>#Gd1uSmy4t$idfIx~`q=u}2G|DL z2HPgsCffG4O}0(7O}EXnEw(MOEwwGTt+X9tJIr>3?I_#1w)1UQ*{-o&XWMMM$9A9X z0o#MN=WK7<-d5P&wY_iG&8~-Cf?c9rZ@Wo$&2}5@Hrs8r+ithhZnxcDyZv^5*>72<_nD?cnR+@6geqn?saC zj6Ff$<@i-$wfwiF2uQ zh4Uci8s~A&6P;DgQ=F$c&v0Jg+~mB%d6n}T=XK7zocB2Ib3WjF#rc}^W9O&N&z)a7 ze|7%ug1BHVyo;GjI~OY#8<(Lj6I>>_Om>;(a@OUw%R843E}vY!x_oyvGr4 zt_NHXxgK#n<`(D{;TGi<;}-9h?KaeHgxe^$(Qaei#=A{&o8mUjZKc~9xAkrt+%~yw zaog*5*zK6xNw+g@=iF|(-Eq6`_RyVjm$|ofH+DC5H+Oe(cU8E%yL-BaxJSFkx%Y5S zaNps6#Qm823HQ?;G7o1DHxCaFFArZ2e~&%ht=@tG$<#my1_`SCCgHudZHUUg2K3 zUS(c`ylTDby@q%V_ZsCj+H0!UVz1R+YrNKZZSdOZb=2#W*IBPWy)G-fu6f<`y6yGQ z>%F(VcL(oY-o3q(y;HsWdS`lPd*^!Rdk^+jcn|R&<~_oDl=npM>E5%v=Xy7KFZ5pP z-R!;5d$acm@5|m-y{~)U^nT|3()*S78z01n_0jRs_0jh!_fh%`@fqeb(r1~^a-Wqx zt9{n_H2ZAw+3K_1=d{l`p9?;UzkDwHT=lu<^VH{s&nus|KJR^TU(#3NEA=(>HS#s_ zHS=}!b@6rc_3#b$jq;80jq~l{+t)YKH`_PIx5{^#?@Zr0zVmz+_%8BY;@jlA(s!@# z0pCNuM|_X@p76ckd&Bp(?>*m#zE6Cg`F`^K>igXf@iX?b_jB}f_H*^?X0{aA}2KEii3d{-23mh6aA#h6I^uSqx^8*(KE(u%~xH)iJ;2}le z@xW7oX9F(=UJkq#cq8z6;QJshNH54aC^#r8s8>+$pp>BWpv<6xprW9XpwggC^3DwK@u5)F;$G zG%z$Iv`c7cXn1H;Xy4Gx(0-wLp#`Bup(UYZp_QT4p|znCLsy4x4?P=3gc*i;g@uJ> zDZ=Do^_wN!?Z5_ji9D zZWits?h@`E-XYv4+%G&dynA>=cy##u@Kxd4!gq%63Ev-nF#JgP@$gIGSHo|F-wwYQ z{xJMW__GMJh_Hyth(!@+Bfdl$L|RAMMA}B$M=F9M!y+Rhqa$M@Ga?Hjiy})R%OWcy zk3^o0yb*af@7kNg%zM43d{M0JabiYkl(QRAYO|D3sI$@HXuW8|Xya(J=yuUo(ZSJC(Xr7zqI*U6j!urw zi!P0>P(%-ku8ppbR!09GJuZ4;^yKJi(KDlGNBK89x;7l zQe*nYWX1H0DT`6XEQwhYvn6J4%z>CgF-Kx9#9WEF9&;<^e$1nor!miC-o&D@=CMw( zUa`Kh0kJ``onj+mqhsS@d&VZl_Kr=D&513Et&1HUtJn~GGmeO3<8<1fcwi@zCvC;nditN1tZ@8Uo9?9wx?XOErGzu2Yhka&y_WV`p6Hb5ml%*3m>80{C-Fq$sl+ph z=aUkXvXgR>@{$UY+a}v4`z3cw4o>cz+%36#a%6H$a(r?^vLY|JAh|HPIJqRbEV(jy zP;yQ3;N*tnS;^ayucwGoY*HdqqA zRcdu=ZR+4uMd}bm>af%islTQEp1LgcQ0kL3Ce0(QcUoQA%(Sg(`_leMJDhej?OfW` zwCia%({88TO}n4=I_+KB$FwhL-_wzF^K_?l_w)|wKIt9PgVQ^wcTMk^o|vAUo}WG- zy*Rxry)wNzy*B-~^r`7h=_}LMq_0okn7$=_d-|^Qz3B(iFQ#8kS6ofMo_;g^PWt`y zhv|>gpQXR(OZRo^8`rnA@07mV``+mLEyFCsE~9;hbB1e%Z$_t#E*af2!ZN}$A~Skt zq-3OLWM=fs$jum%F+O8*#KHDry<8l5#ZYkb!9tj4T`S&OrlW;JE4$l8*%J!@Ci-mC*z2ea;Ez07)> z^&#tXwkR9RCbK2khS@gR?X#V;-Lk#1eX|3y1GA&D`(zhp%d< z&e)s@Ia6|`=gi8Ple02sYtHeUQ;M9kIe+H-m2)NMdd{t!yEzYXKIMGP`JRj9V!324 zl`G3-a{1ggxo)|!xn;SNbGPJP&qMPp^E%~4BXd6)9;=RL`Lp7(d&yS$HiU-G`?E0}!a ze3yLp{0{j(`TqHV`62mT@`V zmlY~j6|OC8F5FVMy>M6Ip2AawR|{VhzAAiM_@VG~;kP2B2rm*BNsG*i+7($9*%a9o zwJ&lmaxHQ%>QLle)U&9xXiCxMqASHnv2Ag;;(op-EIWO0h8_131rg96prQAktFK;h* zmb=M4<=%2Xc}ID$ypz0(JXGFYUM;VaH^_l}n0%ysw0x|5f?Oq^DxV>rEuSY}AYUwB zCSM_6Eng?!Am1$CCf_OFEk7X}i+jN~e}iFP&LBr}S%?w2Ure%XG@}%F4?s z%LbLzmR%^jQ+BWHLD}Q-F6D9MJ<1cxlgihZ?=Ih4zQ6ong-b<1MNCC}MM6bVMRG-2 zMMgz-MQ%m^in@x13T4HRieVKaD@Iq0sTilIm{_5zSX*(b;&r8drGI5c<nQ{`IKv8q#5*Q&6psH)hi z9#sid*;R#AMOE^u(yH33kyT@=##c?MnpQQlYEIR>s?}B7t4>y(sXAYEvFdWwwW^y{ zcd8Wks~%N-sro($8H5cY21y3V2C;+qLArzV2YC+aF{pCTv_abk-Kr+4ZK}IgM_0#H z_pI(!onD<+T~J+AT~b|ET~S?CU0prAdQ|oA)#IusR;#MlR`0CdSN%uz;p!9Br>oCZ z|5<&v`a$)}>aR6u4N)VhVQTmq-5UKGn;MUrZi<@jHIX$jHSskGHAyweHEA^&HDxuG zHG^tuYU*klYCz4s;$P)cMr;*9F&guIpA8R+m`Ur!K2bURPdM zRaaA|Xs82q!|F!VO{rT@x3O+Z-S)a&b$ja$)E%ljT6d!Eblsi0`*jcN9@jmsdr|kQ z?rq)sx=(dq1{)3b8=N+{Veo>%hX+5cm(@Ggcc}NN_pk3*->p8TKEA$ZePVr|`jq;# z`o8sr_44}C`ilBN^)>ZV>lfB9t6x#Sy1u!7Q~lQZ?TY%N^(X32)nBc@Re!hsLH*PE z7xk~|-!xzie1mm^T|@f@=LWY1&j#-XzlM$t!3{kcdNm|9^l3n&=+}_j(7$0o z!^nmu4M!WEDtLvDB1KW7n67A4EK)30G%40Awkvii_9_l24k?Z(jwwzkE-S7nZYu65 z?kgTD38kV992GEDnklW6wn_)3qtag)s0>y{DdUw1$|Pl~vad2r*-u%fRKQQgOi@l( z&Qi`*HYyjv?=CKfpHJKayNUmRAI3YPJPzNnIRif{cL9Dr?k&&*ejo)jfJNXicrb(< z!VPINM1RQttI04@LrJU|#I11f<8U;sOS-N28)Pr!cQ z6mSW62s{CvTN_z3tj(+~tgWnXSl_gEv-Ys|vSwNPS_fD^wtiwAVjX53Vg1^=-pX0) ztQT!9Y<+AKZOd%Mwi4S0+a?=m!)%0&v{@)yz{c7*Te&S}tF+bFk~YJ3(ssdi#dghh z({|T(-}cD%1Z)Ae0y}~qfStjvU{5d$><112bHIFX4mclN2rdDagDb%`;977UxDmua z0wh5n=m!~)14EzyMnD?MeGd`+0kV{gTCg*?!CZ$o|y+0(u2% z0yTp&p$!zF|rII(JZtdIuQL79g2=XN1~I^Dd^YeEOZH4gsw)5(e>yi)Pin9 zag;+V(Hb;~Zbxg;I&=?OkM2hgq36*C^dkBPdIhyyLvNzD&^zc~=mS@#YoKd}Yn?0T z+T*&6HO0DOeX#!6AZ##}jeU-Nf#qTO*ko)9R*22T7GR68rPy)|#wd)%O0h5|VG5>U zacn16haJX_VJEOt*g5Ps>;iTPyXS7?&UANhcXYq!?&R*`?&j{{?(OdD9%XTlb&q%F zx+l2v-39Jx?&?QUQ2Z+POQR2F%rKhi_z*FpDJi9!< zdY+L@$ydqO$kt>BvJ=^b>_+w=dy{?0e&ld+BsrQKN9K|f$VFr^xt`oaT1XoSkqC*B zELlp*q)u)pYsortFS(CAXdw@iXUYGPPstbFSG-NU&AlzXt-Wo$ncfcGp582PUvGc! zK<{Ah5bsd$aPLU(C~u*6vp4Mh(R;<$+Bd*g;9Kci=iBJp;@j$jeIB3JNBL+U;|ux} zpXRIZRr?aYl<$PE!FSnr)px^p$M=`-q3<#ED%GBPhkBo~d`NYpdQiQoKGbmP3u+cM zo0>;`OD(3BQAN~hs+cOF5XwclDS{#?iV9FH#Ze(jpz5ge{>J{U{#<{N-{Y_HoBlKY zbN=7_4gPEXd;SOh$Np#jm-H)i2Hl3vq&v_Z>G$Xl=wWm&olh6g)9A10nRFpN$3m~9 z*U%ej2koM9nxtu(rAz4$T|w8)9*aUlqeH!c(92Z;?bOhyKWw0ig z3>v{7f(L^~f@bjN;D3UrgTDmN1+NBg1aDb_cZ2tX54m<+XYM1eCzr(y;6CO)Tg)xvin#B%e{<`(jU2-HxpFSXRdO|4lH1PJa&_DuuAV#1o#lSze&ZUr zOWYOiDtDdxle=Box-_e_pma?sRa#s6d+AI51HL=oi|@nt`+cc+><~^156j*y8&Nj53@TI0ECeFh?!!0@h!2V_>tIC z%o6*F1I3TUDPo~GUtB0I5sSptVzKyd5fmMwPh><+42cmjDym{ktQ8N4=fvN{3*sN* zf5q$KpW+?yFY#fdWu$fFjY!)_W~4);W8~e)`;iYLT_PhRg_Z~q5hME}e@bsk1Ed1! zU(zgTwlr5-Dt#xdl}e-y(k5w(v{iCRxI{{n6p&cSkm{v_(hP$+eL>&3!^|Z9Nir~5Ir1CM~_8+iC&Cej$V!4h~A3ciQZEhDH%#L zrG?T;d0pwP3{gfXIm#F%SIJW*DFw=GWuCH3S*L7PwklS|p*R&x!4+Q7lsaXPQm^b+ z4k<^KW6BBTl=6#3xvAV%?kayN50uBsGv!5jqwO6IUx=>xLu2t8m8`Ul9Hr1+z)RM8Yi^`?4Py{|q}pKFb@46UiwPV207)w*kzURocmpEg{})^fBl8mEFh-b%h;`#Ae@!9ctmiV{v#qnkF zqWJ3g*0?opkHc{^?v8unzPLXw#-(^Pu2#&iSXHs6qPU`@vR~!!%IwOV$}yGqsv1=_ zu4+=%ylQ9F!K%YmN2`uiTdVPEPqnw&Uo*L8R!w2eoSOOiyLu13r`}7?(m&IO>cjLA z`UE{spQumLXX>+b%QyOLeYw6uFVa`(oAoWaMc<}lx?9I}kIw6Y9?_$^s>k#l`hNYS zeoeor-`4Nx5A?_SGyP?vaiVGB)x`UW4-@}LbW3zk^h)$e^iK>*e3BTF7@8QHn3-6Z zup~SQC9x~{l3KDNS)EKIYm;@!J<0myzT}fs`&8f5 zr>W7YajD!?UTRWmN@`kaPHItVX=+7kRjMSlA+pjxojZGzXeP z%`xV9bFw+ZoM{%BtIYN0CUc9q)pVJ-=`npKZ8Bz=DVb5T+^jKmGilbDC(Kjk8S|`p g-fZY)UNrwOub5ZO8-L$9jT`@M+kgD+|7-sFKYe6-EC2ui delta 29036 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 tin3EK%0tyqwN!wrr$Q7?5mbUYOdX|8{7 Bool { - self.layer.borderColor = UIColor.systemBlue.cgColor - return true - } - - //MARK: 선택이 끝나면 상태에 따라 테두리 색 변경 - func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { - if self.currentState == .valid || self.currentState == .end { - self.currentState = .end - } - stateToColor() - return true - } -} - -extension CustomTextField { - enum MessageInfo { - case text - case color - } - - static let idState = Notification.Name("idState") - static let passwordState = Notification.Name("passwordState") - static let passwordConfirmState = Notification.Name("passwordConfirmState") - static let nameState = Notification.Name("nameState") -} diff --git a/swift-signup/swift-signup/IdTextField.swift b/swift-signup/swift-signup/IdTextField.swift deleted file mode 100644 index b365e2b..0000000 --- a/swift-signup/swift-signup/IdTextField.swift +++ /dev/null @@ -1,34 +0,0 @@ - -import Foundation -import UIKit - -class IdTextField : CustomTextField { - - func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { - let text = (textField.text ?? "") as NSString - let newText = text.replacingCharacters(in: range, with: string) - - isValid(id: newText) - stateToColor() - return true - } - - func isValid(id: String) { - let idRegularExpression = "[a-z0-9_-]{5,20}" - let validString = NSPredicate(format: "SELF MATCHES %@", idRegularExpression) - - var info : [AnyHashable:Any] = [:] - - if validString.evaluate(with: id) { - info.updateValue("사용 가능한 아이디입니다.", forKey: MessageInfo.text) - info.updateValue(UIColor.systemGreen, forKey: MessageInfo.color) - self.currentState = .valid - } else { - info.updateValue("5~20자의 영문 소문자, 숫자와 특수기호(_)(-)만 사용 가능합니다.", forKey: MessageInfo.text) - info.updateValue(UIColor.red, forKey: MessageInfo.color) - self.currentState = .invalid - } - NotificationCenter.default.post(name: CustomTextField.idState, object: self, userInfo: info) - - } -} diff --git a/swift-signup/swift-signup/NameTextField.swift b/swift-signup/swift-signup/NameTextField.swift deleted file mode 100644 index 4de0f53..0000000 --- a/swift-signup/swift-signup/NameTextField.swift +++ /dev/null @@ -1,31 +0,0 @@ - -import Foundation -import UIKit - -class NameTextField : CustomTextField { - - func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { - let text = (textField.text ?? "") as NSString - let newText = text.replacingCharacters(in: range, with: string) - - isValidId(string: newText) - stateToColor() - return true - } - - func isValidId(string: String) { - var info : [AnyHashable:Any] = [:] - - if string.isEmpty { - info.updateValue("이름은 필수 입력 항목입니다.", forKey: MessageInfo.text) - info.updateValue(UIColor.red, forKey: MessageInfo.color) - self.currentState = .invalid - } else { - info.updateValue("", forKey: MessageInfo.text) - info.updateValue(UIColor.systemGreen, forKey: MessageInfo.color) - self.currentState = .valid - } - - NotificationCenter.default.post(name: CustomTextField.nameState, object: self, userInfo: info) - } -} diff --git a/swift-signup/swift-signup/PasswordConfirmTextField.swift b/swift-signup/swift-signup/PasswordConfirmTextField.swift deleted file mode 100644 index 823fdc1..0000000 --- a/swift-signup/swift-signup/PasswordConfirmTextField.swift +++ /dev/null @@ -1,52 +0,0 @@ - -import Foundation -import UIKit - -class PasswordConfirmTextField : CustomTextField { - - private var password : String - - override init(frame: CGRect) { - self.password = "" - super.init(frame: frame) - self.isSecureTextEntry = true - } - - required init?(coder: NSCoder) { - self.password = "" - super.init(coder: coder) - self.isSecureTextEntry = true - } - - func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { - let text = (textField.text ?? "") as NSString - let newText = text.replacingCharacters(in: range, with: string) - - isValid(password: newText) - stateToColor() - return true - } - - func isValid(password: String) { - var info : [AnyHashable:Any] = [:] - - if self.password == password { - self.currentState = .valid - info.updateValue("비밀번호가 일치합니다.", forKey: MessageInfo.text) - info.updateValue(UIColor.systemGreen, forKey: MessageInfo.color) - } - else { - self.currentState = .invalid - info.updateValue("비밀번호가 일치하지 않습니다.", forKey: MessageInfo.text) - info.updateValue(UIColor.red, forKey: MessageInfo.color) - } - - NotificationCenter.default.post(name: CustomTextField.passwordConfirmState, object: self, userInfo: info) - } - - func update(password: String) { - self.password = password - } - - -} diff --git a/swift-signup/swift-signup/PasswordTextField.swift b/swift-signup/swift-signup/PasswordTextField.swift deleted file mode 100644 index 71b6d9e..0000000 --- a/swift-signup/swift-signup/PasswordTextField.swift +++ /dev/null @@ -1,83 +0,0 @@ - -import Foundation -import UIKit - -class PasswordTextField : CustomTextField { - - override init(frame: CGRect) { - super.init(frame: frame) - self.isSecureTextEntry = true - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - self.isSecureTextEntry = true - } - - func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { - let text = (textField.text ?? "") as NSString - let newText = text.replacingCharacters(in: range, with: string) - - isValid(password: newText) - stateToColor() - return true - } - - func isValid(password: String) { - let capitalRegularExpression = "[A-Z]+" - let numberRegularExpression = "[0-9]+" - let specialRegularExpression = "[!@#$%^&*()_+=-]+" - - var info : [AnyHashable:Any] = [:] - - if password.count < 8 || password.count > 16 { - info.updateValue("8자 이상 16자 이하로 입력해주세요.", forKey: MessageInfo.text) - info.updateValue(UIColor.red, forKey: MessageInfo.color) - self.currentState = .invalid - } - else if evaluate(regularExpression: capitalRegularExpression, with: password) == false - { - info.updateValue("영문 대문자를 최소 1자 이상 포함해주세요.", forKey: MessageInfo.text) - info.updateValue(UIColor.red, forKey: MessageInfo.color) - self.currentState = .invalid - } - else if evaluate(regularExpression: numberRegularExpression, with: password) == false - { - info.updateValue("숫자를 최소 1자 이상 포함해주세요.", forKey: MessageInfo.text) - info.updateValue(UIColor.red, forKey: MessageInfo.color) - self.currentState = .invalid - } - else if evaluate(regularExpression: specialRegularExpression, with: password) == false - { - info.updateValue("특수문자를 최소 1자 이상 포함해주세요.", forKey: MessageInfo.text) - info.updateValue(UIColor.red, forKey: MessageInfo.color) - self.currentState = .invalid - } - else - { - info.updateValue("안전한 비밀번호입니다.", forKey: MessageInfo.text) - info.updateValue(UIColor.systemGreen, forKey: MessageInfo.color) - self.currentState = .valid - } - - info.updateValue(password, forKey: UserInfo.password) - NotificationCenter.default.post(name: CustomTextField.passwordState, object: self, userInfo: info) - } - - func evaluate(regularExpression: String, with string: String) -> Bool { - let validString = try? NSRegularExpression(pattern: regularExpression, options: []) - - if validString?.firstMatch(in: string, options: [], range: NSRange(location: 0, length: string.count)) != nil { - return true - } else { - return false - } - - } -} - -extension PasswordTextField { - enum UserInfo { - case password - } -} From dc88bd7da932af07d9c2fc32ff0ea07a243c33a3 Mon Sep 17 00:00:00 2001 From: BMO Date: Thu, 1 Apr 2021 22:33:43 +0900 Subject: [PATCH 06/18] =?UTF-8?q?UserInfoValidable=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=86=A0=EC=BD=9C=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 유저가 입력한 정보가 valid한지 알 수 있는 메소드를 가진 프로토콜 생성 버튼 활성화를 하기위해 사용 --- .../UserInterfaceState.xcuserstate | Bin 62292 -> 66596 bytes .../swift-signup/Base.lproj/Main.storyboard | 2 +- .../swift-signup/IdTextFieldDelegate.swift | 11 ++++++++++- .../swift-signup/NameTextFieldDelegate.swift | 6 +++++- .../PasswordConfirmTextFieldDelegate.swift | 6 +++++- .../PasswordTextFieldDelegate.swift | 6 +++++- .../swift-signup/ViewController.swift | 8 ++++---- 7 files changed, 30 insertions(+), 9 deletions(-) diff --git a/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate index 1a38065402a09c8b81231b10891cb32dbc8ae65f..981add6bc6d86415c725d436a5f5c4fe3d38466b 100644 GIT binary patch delta 33536 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℘kjIsw~ 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 delta 31623 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%0Da=%68uOt6ga_!qFaj@nh|xcmoc;?1=2PwI zb20i`oo$J2>B4g`vKiM$5pe3qv{2QxRJ+pWZNVP;2<<&X$gMNxI=%>DY<tPBGr&(?f$f!7+>_|hR(y_w$`DE76?Rpt-o8grew!Q5nSF}ImJn2<0bV?x1%119QW!Vwcrm~h5~OD%KP z+Vo={Set$fL^M}h(~p2+Xzeo-9(vQSpOFFM8o?GYXrlYHk<4)OY_c>NMkY4fR7zWK1W1gtC=k3c(AF5cK*%K^yf(4`iKlVC zvD%8dP)BY0FH|?VD+m}pmRJcfz(R;HhgXRPLfxDCp7_*a%ajTelU ztxOPb!Bac^D?xALHRFAa>ALZT@uu;X@wV}f@lWGj<2_7t!9-U~bi+hZanCKgal944R#u9rBI`2SE%P9_&XH9^_#Uu|;5 zM1hWK@-TS=iOEwlA9OrkGoLBIqz_}on}T%I0slhnWr{RG)mdwbGDVwWOtGdoQ$tg{ zDZvD;IS3QQm>7(SA($w^1o&<#Cdx2TUTaFWqMFjIs3s_J!|bTggRvFL4Jb7cH8Hi) zNTG05*h$;{U(&9o?iwjbTvcrXiHBQB`~``k{t89TOAnsFweW`l)H2hB_A$ld4UhVd7mYYPD&xW>gq_#Khz` z8Fhtel@%3Qv*5q)zlOTO1TElN(?-)K(`M5a(-)?#rY}v~OxrOr1rt*-F%1(C2q2>n z2xefyf{Bl7O<&tkciB*Xz{E^D>g*S&b8V1A7=a`s} zi3ONgh>2=U)L>!}CKh922_}}-vdD^RuN+xuf-JM6zN{Qq=%{Aa8BkdlOf0vdvTiym zyh>ZedO?M9TLnpLVOYe)Ru!_oY=E9?)?d%{=a6d_3LsR4D_?aFpzyR%Rz!8guf;yxx>Og6w|0w!}Y z*$b29n4EygIhb6D$z2#;O_0|x`5aUAFbtkkjWE>~Qw5kBg{i5p^Z?kt)+WyynETQa zUJ{Fz9oY1;9mN(}Pp`Aci5=lpD(h~0i}7+&1zT)QvH>P$^r>@YsrB$C7+)Od{Ng&*SYa{>*25Z zDjoET?o1TwT=cH>><-9eOYO}_ol{e+r@pa_d#6X8!yj1>f2&{d^)823ayZL+^83C@ zq2BFWJSm_zJBM8aC4&8woy*Q+KV#>!3)qEhH48-mYSulN*o%oDF|iL5`!R6<69+Nz zQ!T3vX~8eMoUJAPhQBK@amZdGpk_S{FUFz4bw)1{dF&TjiP(yX!}b!f9ZCfI75lZe zVFD^-hz!~%6pB!#z1_dRXLmyoV8MBgSF@0l6BbkvJa9kzlU7&)S?G5|b$zmiJ;WZy z#Lt*G^;%)kt4bDLeQ9r3m|6afP1cT>{RyYpbJl`)RxfyG>)Z>PGj6>vu`ma+mc7hg zVSi(PXRoq#c>TW@fRk5^lwZ&#Kb?Cc!Y_^n0SJT zr?p&yRS_JMqQ9BE>9Dr1ty-`1!)a}5c9aU+6IHl zq`~?zTgkDD(V6S2iO~g43?4wVbU@z?r#J4klW15b+%C^sYdUVN4V7y>$FsPHPl!(=q8}$JZJKoYAm= zo5jrrPku6TCD_--gOgb#9O#;G~zF~t=yN~Hf}rj756o_gWHKoA58jU(hrmV zm<+%qNF0R8U`&S8a=UEy{(-IK_5ksZm<+WOM?!SKFzo|~8`??$GzF@;lb8&%6Q9zdJHbfe$Wj2;Wr zua^Mow8Gf$_ZRojD#hQr6!DrAw{)#yb=QB!n=~n&^9COA1W)o5PxB0K#AG5SlQ5Z# zNsu@dlZ`N$hRJkHX4LYmRSI6Twvu>oiA=i`P3)~CGFw-o84pu&s(EirHnu6j`)aNq z$IaF@^>fYY`iH$o%7^e_paCC>$)?pj2-QqCJ0H!*>1O9+b+b1I6dwAJ;Kx}OZl=2@ zpTei7gB`Z>3)mhyY&M^-!S=@_yi3*NG+(5deYRl%sq)1dD!eOU zG1&>M?q#zPKa?-icuO(arJ66tWLJ&1BVWaj1RQ?2X7g^E&G}K9&AY$R=FCU-yN%VWM547!(=`t z0iytug_ta=buEHQp4h3J& zTw85}h9bl}>*tH%LVg{;K~rHpCX1{2jhM7lFA4VKzu>oNB5c(}fZ;$8VY?@9R z&(We?&@0i7|Cay3ivPWiU#8(hn;*QSM8ogR@8?fw_y_od{7?KL{xE-pKgu8Dk7IHe zCMz&miODKV4#(sOOpe6lC`^v7DXQ)d!vm1`Yq2h7T_*Q)&dH;j3@Wlan#| z9wy(%(b~qd@~92E$w^Ye5hi zf(Al7H(T2<`5}}A>nD_iCiZ+c64F5h0RqiO)j|d)XXqtgXewj@j?hd~!J?~>t*P*_ z<^=QS2YCu@g!We6b~^7T8gI7F`?1E`tE-T&@pcos3q6FMLNB4W&`0PifSZFK&&A|C zOhP3yACpkYEW~6rCTnVi{x;qLR+|fhF}cXj3pJ0;=2{0S5jEDvr3G-8#dchnUjY+j zt-mnjX8pB?H~|Y2G|=&wTv{!F=F6<0lZ6j7jz9rk%tF{*u5m!W3Y@pr!dJU{3NwV6 zR?v@i(9i28&6Fw8>3k!sWLbXsMED{!Daup_5V{#29*J5%VCZU*Zz$6s2 zO|`;O8|Vt*b73VI7Se6DgKov-*O=U)8Fr^m+Wbq6bQ>nO*h#6?gp#^jJ z0JBEe&H96|N2A@1$uFygy_kgl0t_(<2ZTeKSr2Mv-L9MUux8e;G_wv{1PM+FXRWkn zblPt;TD?_FexzMo&liy+Tdrba-NqFoYOu}QK z#@<&e+_cgDDclwA0qtLy+;6A-36sY#d0eACv7x;M+!z6^NMQ1SjaGzj13*z0joPL) zVM*vaXrI74#KtR%q71yEgvmqIqJqi88gDPrNpuAq(OKh#w=yX;VttJlx(RQn#El>L zH;#BEw22KwKV1&dSC>QUB#8BO?>MT5HZeqmZ~D}Vp<S9Yh#Jt`<9D@=CSX8I!;1h8Mewy)+?uXhOiNos=3XRC~vjW*=}B`-??ZQW($6 z#N;0^c0h${V+SbBN;*Uwu923AL&Z|DOe`0Ni4|g{2!R`n50UpKCU0T#HYV?2@=r|O z#pJzOafFR@jQEyez9CQ?hspbPQV6_H;CnG(_@`FGzps%(;QPx?I!$x)d*XC$10TWU z1M4Rk-ra8aSt5)iSBnte9#)HUF!_&__cL*!#yel*eWV+{S~EO!C4ROnTM^(XE*C$y z^1=&R;C-f9wpzFBV=M1Eaht}wUfdvV6gP>R#Vz6&;#ToXOc^kRFhyXB#1w@o8pF&$ z%7`gbt+?IByVGXb?=Z#Mcq!g)SxT{5_K?O4?~*w??=j7?dkqV;4d%he>zh4*iDyLU zWLAr3F(p)szhFw#NIQrZMQFa(h?jtrl62DFfRuuvm)Bif*>0EZhIreG51qSAOgU)y zziIfCtl{?&{}P{T_z%Rt#fRcQ;v?~~_(XgvKEp7_k#fS6Gp1ZH<%+5Lm~z9EJElBp zC4&`Tq9j^k41tmfQ_v^Telg5()N&Z4?FMhSFfS41Isv}~_wlmvOE42?vE(MXYa52C zkyHcgC)m46X=KZ~C z;M~@~ag?>FD_!h2j+c^jO(b}c3z~$0CQ^j1Nr3JWQo57_nn)Q^rqoz!A~ltoNzJ7! zDH~H^mK1g0V}6@{s2OvPX-7E^JxQm##tR#umg+F=Tu-l|E$3ztaIC287AlcYDM z;_Z_314-UA7s{UJfl{$1#vn{3R!f61m884BR4Tz2_@Gvk%0UTCB?Ah~gaY%T2^xy0 zG*W{3Jun|s8m+UY{wqOmNtNL3ZLNf*@zMloqV$e5NqSeBEWL-RG)$#qDg#rXQDaPj zJ)2^x8K#=oN*~x*KeVx0FqLIzg{hv_`kQL4vo>F#u`a|^ww-kmu%cDm9<)kY24kDh zxtofq95B9vo%VAHMxd*um6*z_mR4h`g_U-_w8=`lQKxMQu}j*b#V)FqC2ymLr?g$# zVWowM4Up?LbrWbUROx%^Cyn+8X}7dT+AIAi?UVLP2PBy50p@CtsScRxh^bDP>Wrx_ znCgnDZne@O8|^VBPaBSqpzvtlPSw4=7re~Yha;$bownI!jrIzrde~{N0Z8GSl>U|;Sz-UtVf$)c3d1At@P4oNOPQ^< zyU9qVbO~fqm!N;0%XH_KIoSy$ka<~u*m6JQHS?FDK&Cqt*BSMv8Xd8{*7Z^ zsnz8ixrJ4WJY9>CpoQF6m$1sJMLW5NrbTBzKm($X(@ba(7IP#?%;0y@jc< z7^d-3<1l5$l!_@_EBCZ%(O2#Vb`6wazfK9GSHALv@-$Yq)qAkhT77L}ld zuu>kbZP5I~6tq#bPjCtQgcJEK`E5-Oc=n`f8J_*FF2{KJ9o-}3iMmHj)^Og{ao&5~ zBgiTKRxw_D`&phU!#i4t1@ecw98>CCZuGkLze0K;4? z>O)LT$J9rdnt>@O?;m4oCZ=Z9%GEYGmdHzqc_2qEre@pan2V`}@NGAcqgt0EPu`@- zu^CgJ*yY#?a>!rG+q4Z+b1?O(^%LaqSF-K?u}l6=6XaV=&8wEb$JA$pT3Ox0+_FeVLUXn{r?E}xTsg;_1~FPK_f zEuY8K(pO#^$XE0MaB4|kr7H}8=UFy=?c7biD#Lt<Y;(T92s>nA(Ub5M+zR zZ^t}Ip$t10s%iT8hGMkr-;v;_2#Wa1Y$rugU_Ml};()15)rLE2SBwA76thxaaeFnH zrxF13)D$npTWO&9D87oH;*Y7Vm;#-@!W8)2H<$uNzh9;VDnUxH5(0ziVG7i5yD_x~ zQ+qM>Bc}FYmNc(;o zYuUTY!Q!;5*~_;XN~$&4*L{^$mWAJRuzbC%cb%JLTF>sZM1K24or{`V5AW)$tkExO z^Q{dYdFm-W5uieEcNSUwHz?3v)fwEAk#?)m@UBT3EiH06u}W&O1*GI`1c z1t!OVoDVSdw;Enx@ChUgKKk5c=B6=*W-&go3aPrQUdM_D50OfSwkYic zDM$-bZFAOTlXG5#K z!4+27h%(6e1(oGZ+O=z?(UrpEtdw;>ADl2C16*J@8mZmP;(I81AYE8gSpbQ4!Zy0F zvS6sefYKn5dqH_cmBGMvgX8`qtIDzm<7NSxfC=Klo=rY5z8DVILkwPA;fy)&urKV1L)3 zqC8E-0NB4)QPx3A6J{__Qejc^EZB#PP|3wrd7W(glPX7a)Q&?&sbgaXHPbQ*52J;_ z`7PSPJ`9)AK}97w+H=itBf3?2RXgpbaDX0BTGB>)SYz1VQ&g!F!~cw_YEY+KI35T4 zovJE2X%|C=m`MYQv-4m-8}?TWs>s!j12J=_yhJxWsA7!DugJ=QE-BO>X1!1&wPvmvlW^u<%`s{>l=JdOxd~D;ImTMy2q>&Y2x@C zr@rWQRMFtgCZJ7;es(D6p&6@4H&qT?mk<6>3Hl8O=hM6@ z61<>}In4iZ6YX|&6KGyxef&VUvGu=~eqW#;(Y!>v)x1ndskw7Z)|I0!tT zLXUU(Hex%a9n$BONT|g^b8+3`hD0dQ)<;=`iT$B=X>}{V5==Y8qlyh9AtMzatrjIp zAqe@rl12;TTKEFLM?G~jzVJD-?zK7(lgb3cw-18hVr$&;Vc;tXOt!%XzSscAnP{d3 z?5Aj{C~sK!GY{flTZ0ePgi4?q+xE4Xm45~SmtVPSZxR90hR(Z9+ z`DWI-g%O%CRj@J%R9J>)W#ywQis6f7KJcCLk|LkH(t@Z6pSYOVI7^#DE*s_@kxlW# zD)hEiNm)h5^8A9Ln#%UC{C}i%o8cp%Y1OO@Qq&A@5C4xEZTa=I3o)iW{BgDjXF|(bRAYjx&uog{e}L9yUl|H3M0ulzW}ti1X5 z*7F|@BPWRq@awe{FrZ(Cf=sOg+=Tv*mys24>%hR5Z4C}8@uD-~z&Qxe!PSmcJBXMj)o^P{ z#h%h^UG~kv$?#$cI0sj>dL$O#0#H-PrWkdBHHyx{EJm282#cKj zp{`ed!iZ33Lkrmr8i)~wSZFn68rmDW7C@sQFVKyv5ITv0jE`ZmGi-aY@GT}>jd3Qm$FPcPW zc-534wh~*5J;Wk$AgmWT1YXLNiDN|bSaBRI9XTGBjhrOb!m5yG#apoAqlXj#YdnTP zM2vu#m?WjZ8jtBPh}}gR41>G#rO&06(kf|<^aU)}xL-O23pM^O6EFf;Pj-@BVQkMs zPLwm{UUDC~Up=v&OTEl`+4aim9jkY)-o1K{9F2}njxLV%9o-#0&5quVK8}%&(T=f> z4IL94lN?hV8##7yEO&h0af#zb$77Bs9DjDa;&{vPj^ka&`;HGBpF1HZ(usC5Itxmg~esVhDbQYZZuG2lIzrejkXD4S*=Z4Pl&Rv}gorgFN zbuM!r<~+)IjPqFMan5GddAaj`=RaK(7cZAYmt>bzmo%3Qm&PtlU7EXOyX3mGaB1bz z#$}*OvC9ybp)O@E!(1v|hP#Y(8SV0x%iAty7wj_KWx30CmlH03x(co#t~stmAp-uJ`NLukUNFA5lN5eoXzi z`tkJ>>nGPQt3R{;K{w>q$gR0sd$&$*UEI36^>pj)_LkdZx2bL)x_#s}%k2}lPu=FZ zZFD=~cFFCD+cS5AJK;{bGwvpL&RuYq+!gnF?oRHJ?$PeC?hV}&+>_i>+#9*4yJxyL zac}OP?Vju2%l#wwjqW?#FM6114_A+Lk5(Rq9%DR~c&zu>4cx!?0w&kLT{JRf*I_A+`oc{zKzc-8mv_e%C^>D9yRHPq`p zuMfPYdVT2ik(b5md#{6Dr@YR1o%8zD>w?!MuPa`6y`FlL-n6&ToAvhh4)l)lZtdN{ zdzkk)Z`FIe_eAd*-V3~|y%%{e@!saW$NNX`{oV(?&v;+;zUFd`j7Mf!2c8fPyOfl&-Z^6KnA!4cn8D>GzrKH z=p4{BpnE{ifWm;m0c8R21Z)a89B?||&wvMkVxT!HFeWfAFg`FbFgY+aFfA}6uw!87 zz^;Ma1A7Mc4jd3TG_WjiSYTz~@WAnb69Xp&P7a(OxG->4;F`d7fg1vM2JQ;{F7SuI zqk-oGF9u!?{4Jp^#e?wf-i1U(FT6l@G;gZW@FSPu3K_73(5_6v>h|JJ;XC4Hl$%lLP%0bN=T!S<{>RZT8Fd^ zX&=%tq+dw?kiw7wArnI;g;+vnhRhC`6S6d9dB}>8l_6V0%s+(e3HdQ(e`s82W@wYp zW}#W3T|-BOjtLzbIxbWV9UnR|bW-T#(9c2_gjR8VOzsahn)@k zCG33I#jwj^zlB{5yJil19*)Ava5~%=&W6_ucMJCj_X=+i?i(Hz9upoH9v|K&yj^(j z@V?>s;RWI4;T7Rk;UmH)gijBj5&m)btnh~sbc8X2jo>4)BL+qkM+}J=8c`N8ETSr6 zWW?x*X%QbqSR!Ud%#N57Q4>)c@p;6mh&2)GBEF8;8L=zkyNELp=5rC(B5p+7intT; zG~#(AiX%za(NV@I&!`4b zeo+BYK~W)5u~ErUjiNH5nnX2=Y8TZps!LS2C>%8*YI@X+sE?y&MJnhIl5hR|L6(PlcFa_zaKp{`oriM(KDlGN3V=t6TLoqWAx_e zFQUJR-V?nq`e5|o=%dl+qc27O7JW5_jp1YJ$GFFM#(2ks$3(@%#Kgs9#^^c8%>3+dH;zY<_G(thpq%GIm7l z=-9Eb<6=LEofbPic1G;d*bT9pW50;~GIn?DvDlNbr((~!1 z#udkv#Ep)d68B-;jJTO`pTy0Ln;%ylw>WND+?R1*#qEguChps~AL91L?Tb4QcPQ>i z-0g-^!?=c>8jfl>zu~Ti7vc@^Y`hRJo8ukg-Q)e^1LK3^L*v8aBjZ!!)8iY*H;d1X z&y6pNuZSNRKPLX|`0?@Y#7~ZYKYmvHlK9o}YvR|%Z;byc{>S*A;*Z21k3SuMF8+M{ z#rUi7e zVNrs4ZNi3xO$l2P4kVmTIGgZG!uf=o33n3iCfrX%iBh6NqGO_SVr8P5I6iS=;=75< z6IUdzOkAC~E^$NR=ESXu+Y%2Y9!)%v_;cdv#IuQ45^p5lPQ07=SK{AER1%Y9O5&1S zliZR#lDv|_k|L9$lVX!Hl3FIUPHLOfKB-Sqzoh==q{5^TNwbqaP5LZpK~hc9;-sZX zwMi?JzDfEnX?N1zqq$409wj|ZdY+7u-IIfp!;&MCqmmmZ zw@z-G+&;Nua=+w)La&PnnT2 zH)V6m)|Blj=5r~(rd&w5obr3hA1T*UZl&BwrBh9*e5#l#r#hs%r~0M_qz0#krADN} zq7SL*shO#*Qro1qOYM-_H?@CiVd{X?%2YLVeCov1NvW39rKz>4D^u5`u20>R`bFxt z)UQ*&Nj;W&GWAsInbdQs=Tk4GUP=8u^;+tUMr@;yMy(o^nj6h%^hKkyjUK1Dr}?J^ zrG=)2r^TnGr!`J%nwFK8la`m(GOb%$&$K>i`Duk|1JWj>O;4Md_DR~@w1sJl(w3$z zPur6AW!mnv{b@g?9Z5Txb~^1`+OKK1(*91D)1A^I(lgRqrguv3n%*P5cY43{;`EaA zvh-o;Rp}$r&FSx@f1GY!nZ7lBSNiwqd(!u%A51@)ek%P;`Y-9{(=TQiGQ2VxXLQdP zkWrjbl2Mj1ETb~x-HeYjW@mhw@ma>gjGBzi89Oq*%h;XqW5)iBQyJ$oE@oWL_$}jR z#+{728GmK`ooUEqGhH&hG8<(2X8LD_WkzO3XU1j5XJ%yPWVXxf*8FPo>*nV7vxqD< zOUd%eipgr2m6(;1m6ny6)if(BD>tiUR-deXSp``GvWl}xvdXe5vW91k${LgPQP%3L zZCOXM>1@~R`0VWL{Or=~x3ksk3E7jf-^-qo{bBZu?CR{r*~_w5WUtCzo4p}>bM_b6 zcXK>*y5v}LzRkIn>y;ap8<`uEYi^jEn46rNm79~Bm)k0LVeYEjFLS@j-I@FC|9U#_ zzoZkmfmc@7zB;SBuDY(SdF{Q;%F5WeN`?#(B;@M?WCUMjhzuDbh#)aU5E+_+(%HWD zg4R`6S+;D~wY$1{d|uD%^?ZK&{0pDg`}2M$A5T7&d^Y)d^3CMi$#;__^zou!*o=VN+lUFenTG+XhR6ZHHyTD6m2p6IKG_!33~Um=dOj z>0s5c8kiYY2RjDqhP{K2hcAJzhbP0Ka0GlCd--+3+H`9uB(U&F~2PF#IU| z1pE~IFZd037rYz(5dIkc4E_TC7SRv!3t~2631T^76=E$S5wR5kLm&|;h;+nu1P(z) zob!ww`4*x;hCt+)J#eyEt8(f z$jr|y%4B7hWO6fiWePJbnSW$uphCPWrjlG1uiS5GP z!QRE*$3Dcq!M?|S!hXSm-*A0#zu;!$7T^}+mf=?85^(Er8*wSPbQ}ps#qGo~a78#4 zj)UXj%!f^-NQY^J;FV~J;%Mw8kRLX z3z=1zWytExx}EhEKM_A2KMOwxKM%hgpNQXpPr`4;C*vU?emfqG$KeV1Y9v;e?Tdc*0o1IKl+NB*GNJ zG{OqPYQkE=I>LHF5@8ErD*;MC5KsgLK}BdGTqL|FP9P={@kAj}MpO_hi5jAb=pfb; z!3Ls-=q37y5n?Ct0P!&KDDgP)9`P0N9q}XaGpP?Ljx>-oi1Z_ADrpvJ4rxAV328ZL z6=@9#O4>o9lK@g7iAgFU@kjzvDM?H!C)JYbNV`dPl9SXxY9uw0{G?{m9@2Tz^XyUC zi?g?93$h*Ahq7;HKgxcZ{UZAnnEi>|kKCU;kUWSygglHqjy!=pi9CfojXZ;#MBYZu zAZL=XWFnbNrjlu74p~Z8kSobrvVm+OTgX_i@SKr3Kjh5MLG*fvs&gVaU6g*5$&^G2xRnB z>bu-=x$D5(>|9Z@B75xPk-79)f)Km1NctbI=cw2F5aYk`# z@xkK5#eWtbXU=7=V#1jyW-2p-naRX5@k|mkhndUdGlk4jridwF%9skKim7Jmn0jUl zGs=9!8pB%2!n4FIC+jflH0vBI#=6M5!Me}tVLf3zXT4&*X1!&-XUDMzvInz=vBB@z zquBGz1v#!h9E*mQOt8(29yjc8Co);WMoNv$(WKwCEH3^B{e0TCEc6> zoT;3R92f`5N#Ue%a2yJU26FN^`J5sSlf&k4I8sgpN6ArhbR0dWg|nY?gma8@l5>s| z<6Pog;oRr+a9(l#f3yc@h*ygR(R zya&7<-ecZ--Y4D{-Zy?fet-UC{yhF-{xbebegc0zKZ(DYpU&UGC-MP)F`v!n@`d~| zzJy=SH}IYOFh9cY>9Ug z1-J{lOSsFq>*TIyf}w)n1&amC1SEcn$eq5$toq5X7?sKz+M-qq104r>5UyYN?oNMu-6J6C_U7BS3cJ3em_-u zw)flpLazb+uU^slyRy+`E6UJi!ZKIc$+8~NK+*T2A4FqBKZ<@8%@WNP%@ZvUEfy^m zZ4hk|C5xaUga{>Kh0s$F={V^x(#g`P(pl0u()rSbpfphmmlCAeQi_x&&6DO!i=-?mN6MF~r8=oz zYLM1Q%~Gq>E_F&9q#o%}>Amvr%4e0s%Ztlv%G=AYly{YPm)|dcSpKs7WBKRuud=?f z{<49xc-dIlIN1c*B-vzHf($A{$x>w*GK?%sMwDgCiexOAP^Oe=WuRVWlv!lEWe!=r ztW|bUc2Rakc1?Ce)+Otf-Iw*qp2(h8^r?ue7*O$D#o&rz72j8ks)(-`Tk%uH(u%YS zPKCMRK*fFeAo&dWW;s%xB2SlZmlNbPd7eC9UL{oOvR&2yVYK`UmaBMS07ZLRbNnFR$o=$RNq$LRo_>?(e%;8YsPBEX(nhU zX{KnVX=Z9>YvyUzYmzjZHOU%?2ChMAQZ?zC9U8QzL}S$ap}DE;qn)mWXldFCtxj95 zt5_F&9ZHv~%h2u6QFTn6OsCLQ>a;q&&Zw)^)#+?Hr!K6E=>E{{(;d(q z)*aQI(4Eqq)t%Qptr}7_uL@PgtTI;}sJd14ML$442-FYN57&>?Pts4(Pt(uT&(_b? z&)2WfuhVbPZ_+30A$qEwspsl<=|R0jFVidZD!oO&Tkp~LR%P`2^au4v^(XYF^=I`r z^pEtP^#q~dQtV#>J`YTnyEF(H9$>O&7PWA&Gnj_HMeWJYo64+sd-=X zspd<~H&b6zoN1&f-Za)U&NRXFi)pnf*#tMCOsS?FCX6Y|L@?!>icEY{g{jh{HR(+z zlf|^#WH&XN_L-uli>524Yo;5fE>pMZzNyFb#PnZnpW1%4{c8u-f`e;^)sCngSsPzF zrgl;7wpvzgO>Jjww|Rhhs(GUsW=5J*%xPwvnPSd0?=>>0t**T; zQg^uSblthSSly+%zv`~l{atsn?s46-x|emY>)zFUu#UD)wobRsvd*zCv@WqOx307% zTcOr8Ylb!3nro$70c)|9ZRJ||R)w|3+GGt_!4_+qwcWbcy3cyhdc=Cndd+&nddqs- z+HJjW?Xf<#KDEBEzS=!}_nh6R-9@{NyZ7zBv-_Lv7uyWm@3y(N`L-3d^|mD2X4_U9 z)CRYqZ8#gjmTjZha&1yum955RwpndXTZ669)@0jjJ8nB;J8!#S`^$FScGK2ndk)(E zwGX$Cw8z`W+Q-=^*eBVi*r(ZN+E?2X?1}ab_9XijJH!sNBkbGksrCZ9#@=SXV*lir zN7p#lbk{7`9M^o;BG(evHdmG_+eLBFT!5?4#dNVjm(*3^GPukxtIO_ca5cJo zu7GQw>y+!J>$dBz>w)W$>#6I7>mS!!*N2874Z|D0Zy41O-!QgeT*LT=i4DItOlerx zkkue+a5bE4c;WuRz0i$vXS%U&yqoCW=`MD&+$C4ABWo)k~IXNL#l z$?_0AWDnKD^9Vekr_3YvlzZeJrKi%P^;CJ9J?A~I8%H;;Xv}I9H98s(HJ)lb+Zb)U z(D--by~c-)j~kygzHI!b@r}2SH_kf{^bYn8^N#S&_O9@*^(J~ZdXv3SFT#uR;=Lp< z-OKR`yro{Tx5BIRs=ZpT&Fl9b^d9jZ^Pcpc@t*fy@Lu*__5SUB?tSHb?S1Qg@BQTc z;{Dpxrzx&!K+}|_^-VcVvL;{Cg{F7D(Z0pLHNJJe4Zb8F+?V0Y^kID<-beD0eH34= zkLBa|_&%Yp%qRBQeF0yqFYJr>_WKU`{`4L5UG`n|-SIv5z4pEHef0g;8_J6F5Acun zPxeps&+z~5pX;CRU*k{kC;B(~t^Ou|r~iQeu>Yw4g#WbvoImEj%hCf z$H3>ne}QkoQNj7aHNmyPgkWM29>fOmK~gX$m>Z-AfnZ^q- zs%@=mt!}MpL$+btvf2o3*`e{FnW0&s-$QdkD?_V7t3zu;kPtKk3n4<75H^Gh;X`>L zMhFNMgajdB2n>~l)FDks8>$M~Le5Y_s4?UV1wx&nlc6i2C!yz|SD`nd_n}W<=u7BZ zxLp?Qut|m|Ms8T z=d>rZgYD(*mF=eXhIW5@b9-xhxP4#y!S*BV$J$S{|JyO9V_wJdjtw1~I+8n}9f*!? z9jP6J4r<5F4n{{oM@a{-L(l=1c8EHB9oHiRBEur%BGV&tBMTynBg-OdBZ-lXkBXa8kI%mQDw9xdZi%xEjBB*D7GrLF}68|jAg_y zF(6hD - + diff --git a/swift-signup/swift-signup/IdTextFieldDelegate.swift b/swift-signup/swift-signup/IdTextFieldDelegate.swift index ea9e776..9cc1acb 100644 --- a/swift-signup/swift-signup/IdTextFieldDelegate.swift +++ b/swift-signup/swift-signup/IdTextFieldDelegate.swift @@ -2,7 +2,12 @@ import Foundation import UIKit -class IdTextFieldDelegate : NSObject, UITextFieldDelegate { +protocol UserInfoValidable { + func isUserInfoValid() -> Bool +} + + +class IdTextFieldDelegate : NSObject, UITextFieldDelegate, UserInfoValidable { private var validater : IdValidater @@ -47,6 +52,10 @@ class IdTextFieldDelegate : NSObject, UITextFieldDelegate { return true } + + func isUserInfoValid() -> Bool { + return (validater.state() == .valid || validater.state() == .end) ? true : false + } } extension IdTextFieldDelegate { diff --git a/swift-signup/swift-signup/NameTextFieldDelegate.swift b/swift-signup/swift-signup/NameTextFieldDelegate.swift index d7f9e2e..55fdf97 100644 --- a/swift-signup/swift-signup/NameTextFieldDelegate.swift +++ b/swift-signup/swift-signup/NameTextFieldDelegate.swift @@ -2,7 +2,7 @@ import Foundation import UIKit -class NameTextFieldDelegate : NSObject, UITextFieldDelegate { +class NameTextFieldDelegate : NSObject, UITextFieldDelegate, UserInfoValidable { private var validater : NameValidater @@ -47,6 +47,10 @@ class NameTextFieldDelegate : NSObject, UITextFieldDelegate { return true } + + func isUserInfoValid() -> Bool { + return (validater.state() == .valid || validater.state() == .end) ? true : false + } } extension NameTextFieldDelegate { diff --git a/swift-signup/swift-signup/PasswordConfirmTextFieldDelegate.swift b/swift-signup/swift-signup/PasswordConfirmTextFieldDelegate.swift index da85c0b..396eb63 100644 --- a/swift-signup/swift-signup/PasswordConfirmTextFieldDelegate.swift +++ b/swift-signup/swift-signup/PasswordConfirmTextFieldDelegate.swift @@ -2,7 +2,7 @@ import Foundation import UIKit -class PasswordConfirmTextFieldDelegate : NSObject, UITextFieldDelegate { +class PasswordConfirmTextFieldDelegate : NSObject, UITextFieldDelegate, UserInfoValidable { private var validater : PasswordConfirmValidater @@ -51,6 +51,10 @@ class PasswordConfirmTextFieldDelegate : NSObject, UITextFieldDelegate { func validaterUpdate(password: String) { self.validater.update(password: password) } + + func isUserInfoValid() -> Bool { + return (validater.state() == .valid || validater.state() == .end) ? true : false + } } extension PasswordConfirmTextFieldDelegate { diff --git a/swift-signup/swift-signup/PasswordTextFieldDelegate.swift b/swift-signup/swift-signup/PasswordTextFieldDelegate.swift index 7cac5df..0262586 100644 --- a/swift-signup/swift-signup/PasswordTextFieldDelegate.swift +++ b/swift-signup/swift-signup/PasswordTextFieldDelegate.swift @@ -2,7 +2,7 @@ import Foundation import UIKit -class PasswordTextFieldDelegate : NSObject, UITextFieldDelegate { +class PasswordTextFieldDelegate : NSObject, UITextFieldDelegate, UserInfoValidable { private var validater : PasswordValidater @@ -47,6 +47,10 @@ class PasswordTextFieldDelegate : NSObject, UITextFieldDelegate { return true } + + func isUserInfoValid() -> Bool { + return (validater.state() == .valid || validater.state() == .end) ? true : false + } } extension PasswordTextFieldDelegate { diff --git a/swift-signup/swift-signup/ViewController.swift b/swift-signup/swift-signup/ViewController.swift index aa056ee..6b4a8ca 100644 --- a/swift-signup/swift-signup/ViewController.swift +++ b/swift-signup/swift-signup/ViewController.swift @@ -10,16 +10,16 @@ import UIKit class ViewController: UIViewController { - @IBOutlet weak var idText: IdTextField! +// @IBOutlet weak var idText: IdTextField! @IBOutlet weak var idLabel: UILabel! - @IBOutlet weak var passwordText: PasswordTextField! +// @IBOutlet weak var passwordText: PasswordTextField! @IBOutlet weak var passwordLabel: UILabel! - @IBOutlet weak var passwordConfirmText: PasswordConfirmTextField! +// @IBOutlet weak var passwordConfirmText: PasswordConfirmTextField! @IBOutlet weak var passwordConfirmLabel: UILabel! - @IBOutlet weak var nameText: NameTextField! +// @IBOutlet weak var nameText: NameTextField! @IBOutlet weak var nameLabel: UILabel! @IBOutlet weak var nextButton: UIButton! From 045bca70e6dfe9f144b12b6abf3c0e055b0b46ff Mon Sep 17 00:00:00 2001 From: BMO Date: Fri, 2 Apr 2021 00:08:44 +0900 Subject: [PATCH 07/18] =?UTF-8?q?ButtonManager=20=EA=B5=AC=EC=A1=B0=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 기존의 딕셔너리 구조에서 UserInfoValidable 프로토콜을 채택한 타입의 배열로 변경 --- .../UserInterfaceState.xcuserstate | Bin 66596 -> 70913 bytes .../swift-signup/Base.lproj/Main.storyboard | 4 -- swift-signup/swift-signup/ButtonManager.swift | 29 +++++------ .../swift-signup/ViewController.swift | 47 ++++++------------ 4 files changed, 29 insertions(+), 51 deletions(-) diff --git a/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate index 981add6bc6d86415c725d436a5f5c4fe3d38466b..2959c410f113c0ebc012a15086c5212ee6dc5eb3 100644 GIT binary patch delta 35816 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�}6+aDC*s-aKzwYMZ?TCDJXtOxP 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 NRonmR|Noif{{aP_0GR*) delta 32645 zcmbT82VfM{8mM>9nYKH9(hDIyq!&_2NazrH?+^k6hy(&jXoBqgN|nwcB1+lN3=DN+Q5cV;&W;iC7x_gH2!JN^6HY5yMBNUxnmFD#~BTr_xVhLw^i zFDi%%rs`24RDCLjYCy$OsZ=hNM>VGMsRF76)r0Cu^`nZZA=FT+gc?D0cC?~~*e!@f z91@U%ypT8YM**lF3PVvS6{VquC>>>>#wZ^ZpiZa=m7tNR9F0L^(Ks{-J&mR!JDQGW zq1k8^T8*5j8m&QV(K@sqZ9uQ0*U)zKCVCg`LLZ`!(0=qWI*2|+C(ucB3Y|t@q94$& z=!zX(rv{=M=r+2C{=ybaVFt5U!9F+$*Tyd1xbU%@NzO1vI#z^~#r z@Z0!(ych4o_7Cv^ddO7_vy~<9nrq|N%(!1#Q==bT}^d9;HdM~|?{*XREAEl4cr|Hk> zZ|U#o@9A^&5A+54B7KRzN#A2AhGAHSV+2NFRK}a}VFH*yCW47&l9`4~I+M-hFpZgf zrWw+G->_E1R9mS4j z%h@sPSavcyg?)yd%0A0J&(2}zvh&!N*yZfY>?`aFb|t%tUClb#YIZ%lf!)k*VYjk- z*bmsf>^}BG_9J#b`!V||dx$;89%nyePp~K1GwfIFdG-Q(mHmUg!~Vto%~6~m=g$Rj zfm{$5%+=%UAzXbfl#Arzxl}HVYsBSp&AAp_8?KP+!S&>NalN@dTnRUf8_td3O1W}w z3^$&ez)j(1a5K4C++xnbE#a1NuW;MA?cAH(Tig!rZEh#`4)-p%i#x&{<&JU3xzD&0 z+)3^fcb5B>`;PmayUJbTu5&lIKe(HA?iP2KyT?7?8J^`iUg1?<<8|JT58~_dQG6^P z$EWbAd=}r5Z^gIf+wg^aTfRHrgYU`r;(PP``JsFXKa3yFSMpW-IDR}ofuG1v;-BUx z^LF0gXYe!m7x`uUOZ;;FW&Ra@1;3K7=GX8W_*ePe{660PA%B4Xgg?w5;XmU~@SpQ% z_^tk4NNXc&t~Jlv z*qU!Gur{$awKlUhx3;!+w05`lunw>ev=&*1TSr)@TJ2WD3f5<>&snEgr(0)OXIkgj zt&6S8tS?!e)@tiU>n7`7>pts;){m_Ftsh$tSU<5Iw0>$mYCUcJ%KEkSy!9vRW$P6i zZDVY#jkEDKtIcK;Y@$uFX*Pdbh^@XY#@4`=VoSBPwzaVp+S=OM+1lGW*gD!e**e?0 z+xppxZG&x3*+$wbZB@4CZF6k)xwd(>`L+eNg|<_YtK#eze4 zQCKFtBCHU$3vUW<2|I+hg`L7X!n?vQ;XUC4;ehaoa8NiV92dS2z7)O|z7f6^einWa z{ub^F4@8SdiAcmEEixi2+C)wC6aB?dF-!~>W9_PVuOCOgt`rCY}&ail@ZW;^*QS@hkBM@kjAD@q&0=ydnM}-W2~9?@Qj2 zkK`-)N&ZrR6etBr!BRcD6ecy0lB8rQOUjmVq^43cskhWe>MQk=`bz_(fl`q)NGg^} zq%x^Os+1;6Q>164>Cz186={XEQd%XgmYhQ>j)qDw~wO%0A^o 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 - - - - diff --git a/swift-signup/swift-signup/ButtonManager.swift b/swift-signup/swift-signup/ButtonManager.swift index abaeda0..2b24b4a 100644 --- a/swift-signup/swift-signup/ButtonManager.swift +++ b/swift-signup/swift-signup/ButtonManager.swift @@ -3,30 +3,27 @@ import Foundation import UIKit class ButtonManager { - private var states : [ObjectIdentifier:CustomTextField.State] - private var activeButton : Bool + private var userInfo : [UserInfoValidable] + private var isButtonUsable : Bool init() { - self.states = [:] - self.activeButton = false - allElementsStateValid() + self.userInfo = [] + self.isButtonUsable = false + isAllInfoValid() } - func update(textField: CustomTextField.Type, state: CustomTextField.State) { - self.states.updateValue(state, forKey: ObjectIdentifier(textField)) - allElementsStateValid() + func register(userInfo: UserInfoValidable) { + self.userInfo.append(userInfo) } - func allElementsStateValid() { - for ( _, state) in self.states { - if state != .end && state != .valid { - self.activeButton = false - break - } - self.activeButton = true + func isAllInfoValid() { + if self.userInfo.filter({ $0.isUserInfoValid() == false }).count > 0 { + self.isButtonUsable = false + } else { + self.isButtonUsable = true } - NotificationCenter.default.post(name: ButtonManager.buttonState, object: self, userInfo: [ButtonManager.Info.state : self.activeButton]) + NotificationCenter.default.post(name: ButtonManager.buttonState, object: self, userInfo: [ButtonManager.Info.state : self.isButtonUsable]) } } diff --git a/swift-signup/swift-signup/ViewController.swift b/swift-signup/swift-signup/ViewController.swift index 6b4a8ca..809fcda 100644 --- a/swift-signup/swift-signup/ViewController.swift +++ b/swift-signup/swift-signup/ViewController.swift @@ -1,43 +1,27 @@ -// -// ViewController.swift -// swift-signup -// -// Created by user on 2021/03/29. -// import UIKit class ViewController: UIViewController { - -// @IBOutlet weak var idText: IdTextField! - @IBOutlet weak var idLabel: UILabel! - -// @IBOutlet weak var passwordText: PasswordTextField! - @IBOutlet weak var passwordLabel: UILabel! - -// @IBOutlet weak var passwordConfirmText: PasswordConfirmTextField! - @IBOutlet weak var passwordConfirmLabel: UILabel! - -// @IBOutlet weak var nameText: NameTextField! - @IBOutlet weak var nameLabel: UILabel! - @IBOutlet weak var nextButton: UIButton! private var buttonManager = ButtonManager() - // @IBOutlet weak var idTextField: UITextField! private var idTextFieldDelegate = IdTextFieldDelegate() + @IBOutlet weak var idLabel: UILabel! @IBOutlet weak var passwordTextField: UITextField! private var passwordTextFieldDelegate = PasswordTextFieldDelegate() - + @IBOutlet weak var passwordLabel: UILabel! + @IBOutlet weak var passwordConfirmTextField: UITextField! private var passwordConfirmTextFieldDelegate = PasswordConfirmTextFieldDelegate() - + @IBOutlet weak var passwordConfirmLabel: UILabel! + @IBOutlet weak var nameTextField: UITextField! private var nameTextFieldDelegate = NameTextFieldDelegate() - + @IBOutlet weak var nameLabel: UILabel! + override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. @@ -50,6 +34,7 @@ class ViewController: UIViewController { registerDelegate() registerTextField() + buttonManager.isAllInfoValid() } func registerDelegate() { @@ -60,10 +45,10 @@ class ViewController: UIViewController { } func registerTextField() { -// self.buttonManager.update(textField: type(of: idText), state: idText.currentState) -// self.buttonManager.update(textField: type(of: passwordText), state: passwordText.currentState) -// self.buttonManager.update(textField: type(of: passwordConfirmText), state: passwordConfirmText.currentState) -// self.buttonManager.update(textField: type(of: nameText), state: nameText.currentState) + self.buttonManager.register(userInfo: idTextFieldDelegate) + self.buttonManager.register(userInfo: passwordTextFieldDelegate) + self.buttonManager.register(userInfo: passwordConfirmTextFieldDelegate) + self.buttonManager.register(userInfo: nameTextFieldDelegate) } //MARK: @objc 처리 @@ -76,7 +61,7 @@ class ViewController: UIViewController { } self.idLabel.text = text self.idLabel.textColor = color -// buttonManager.update(textField: type(of: idText), state: idText.currentState) + buttonManager.isAllInfoValid() } @objc @@ -90,7 +75,7 @@ class ViewController: UIViewController { self.passwordLabel.text = text self.passwordLabel.textColor = color self.passwordConfirmTextFieldDelegate.validaterUpdate(password: password) -// buttonManager.update(textField: type(of: passwordText), state: passwordText.currentState) + buttonManager.isAllInfoValid() } @objc @@ -102,7 +87,7 @@ class ViewController: UIViewController { } self.passwordConfirmLabel.text = text self.passwordConfirmLabel.textColor = color -// buttonManager.update(textField: type(of: passwordConfirmText), state: passwordConfirmText.currentState) + buttonManager.isAllInfoValid() } @objc @@ -114,7 +99,7 @@ class ViewController: UIViewController { } self.nameLabel.text = text self.nameLabel.textColor = color -// buttonManager.update(textField: type(of: nameText), state: nameText.currentState) + buttonManager.isAllInfoValid() } @objc From 2d69d1e5c3ee77c044b05f441d5c16fee81da455 Mon Sep 17 00:00:00 2001 From: BMO Date: Fri, 2 Apr 2021 11:41:34 +0900 Subject: [PATCH 08/18] =?UTF-8?q?TextField=EB=B3=84=20firstResponder=20?= =?UTF-8?q?=EC=97=B0=EA=B2=B0,=20name=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Next를 누르면 다음 TextField로 가게끔. name에서 Valid인 경우 UserInfo를 넣지 않았는데, 이때문에 guard 문에서 걸려서 리턴되던 것 수정 --- .../UserInterfaceState.xcuserstate | Bin 70913 -> 71040 bytes .../swift-signup/Base.lproj/Main.storyboard | 15 +++++++++--- swift-signup/swift-signup/ButtonManager.swift | 2 +- .../swift-signup/IdTextFieldDelegate.swift | 14 +++++++++++ .../swift-signup/NameTextFieldDelegate.swift | 14 +++++++++++ swift-signup/swift-signup/NameValidater.swift | 3 +++ .../PasswordConfirmTextFieldDelegate.swift | 14 +++++++++++ .../PasswordTextFieldDelegate.swift | 14 +++++++++++ .../swift-signup/ViewController.swift | 22 ++++++++++++++++++ 9 files changed, 94 insertions(+), 4 deletions(-) diff --git a/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/swift-signup/swift-signup.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate index 2959c410f113c0ebc012a15086c5212ee6dc5eb3..e3f4ba8b83b9ec349d22174f4544eb7154e3eb7f 100644 GIT binary patch delta 31701 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 + + + @@ -40,7 +43,10 @@ - + + + + @@ -48,7 +54,10 @@ - + + + + @@ -56,7 +65,7 @@ - + -