iOS/Swift

[ Swift ] μ •κ·œμ‹μ„ μ‚¬μš©ν•΄λ³΄μž ( UITextField, UITextView )

κ²½ν‘Έ 2022. 6. 27. 18:30
λ°˜μ‘ν˜•

μ•ˆλ…•ν•˜μ„Έμš” ~

 

μ˜€λŠ˜μ€ μ •κ·œμ‹μ— λŒ€ν•΄μ„œ κ°„λ‹¨ν•˜κ²Œ μ •λ¦¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€ : )

 

 

 


 

 

ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ‹€ 보면

이메일, λΉ„λ°€λ²ˆν˜Έ λ“±κ³Ό 같이 νŠΉμ •ν•œ κ·œμΉ™μ„ ν•„μš”λ‘œ ν•˜λŠ” μž…λ ₯이 μ‘΄μž¬ν•  μˆ˜λ°–μ— μ—†μŠ΅λ‹ˆλ‹€.

 

그럴 λ•Œ ν•„μš”ν•œ 게 λ°”λ‘œ μ •κ·œμ‹μž…λ‹ˆλ‹€.

이λͺ¨ν‹°μ½˜μ„ λ°©μ§€ν•˜λŠ” μ •κ·œμ‹μ„ μ μ–΄λ³΄λ©΄μ„œ 정리해 λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

μ •κ·œμ‹

κ°€μž₯ λ¨Όμ € νŠΉμ •ν•œ 쑰건(μ—¬κΈ°μ„œλŠ” 이λͺ¨ν‹°μ½˜ 방지)을 톡해 Bool 값을 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

func isCorrect() -> Bool {
    do{
        let regex = try NSRegularExpression(pattern: "^[a-zA-Zκ°€-νž£γ„±-γ…Žγ…-γ…£\\s]$", options: .caseInsensitive)
        if let _ = regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions.reportCompletion, range: NSMakeRange(0, [λ¬Έμžμ—΄μ˜ μ΅œλŒ€ 길이])){
            return true
        }
    } catch {
        print(error.localizedDescription)
        return false
    }
    return false
}

 

μœ„μ˜ μ½”λ“œλ₯Ό 보면 μ •κ·œμ‹μ„ μ‚¬μš©ν•  λ•Œ do, catchλ₯Ό μ΄μš©ν•΄

νŒ¨ν„΄μ΄ μœ νš¨ν•˜μ§€ μ•Šκ±°λ‚˜ μ»΄νŒŒμΌν•  수 없을 경우 false둜 λ°˜ν™˜ν•˜λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 

 

μ•„λž˜λŠ” μ‚¬μš©ν•œ μ •κ·œμ‹μž…λ‹ˆλ‹€.

^[a-zA-Zκ°€-νž£γ„±-γ…Žγ…-γ…£\\s]$

 

^ : μ •κ·œμ‹ μ‹œμž‘μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

$ : μ •κ·œμ‹ 끝을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

 

^와 &사이에 μ›ν•˜λŠ” μ •κ·œμ‹ ν˜•νƒœλ₯Ό λ„£μ–΄μ£Όλ©΄ λ©λ‹ˆλ‹€.

 

즉, ν•΄λ‹Ή μ •κ·œμ‹μ€ μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμž 및 ν•œκΈ€λ§Œ μž…λ ₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ 이λͺ¨ν‹°μ½˜μ„ μž…λ ₯ν•  μ‹œμ— isCorrect λ©”μ„œλ“œλŠ” falseλ₯Ό λ°˜ν™˜ν•˜κ²Œ λ©λ‹ˆλ‹€.

 

λ§Œμ•½ 이 μž‘μ—…μ„ UITextFieldμ—μ„œ ν•˜κ³  μžˆλ‹€λ©΄

shoudChangeCaractersInμ—μ„œ ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄ μ£Όλ©΄ μž…λ ₯ 여뢀도 μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

// 맀 κΈ€μžλ§ˆλ‹€ 호좜
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let title = string.cString(using: .utf8) // ν•΄λ‹Ή λ¬Έμžμ—΄μ„ .utf8둜 λ³€ν™˜
    if title.hasCharacters() { 
    // hasCharacters λ©”μ„œλ“œ 내뢀에 μž‘μ„±ν•΄λ‘” isCorrectλ₯Ό ν˜ΈμΆœν•˜λŠ” 뢀뢄이 μžˆμŠ΅λ‹ˆλ‹€.
        return true
    }
    return false
}

 

이제 맀 κΈ€μžλ₯Ό μž…λ ₯ν•  λ•Œλ§ˆλ‹€

μž…λ ₯이 κ°€λŠ₯ν•œμ§€ λΆˆκ°€λŠ₯ν•œμ§€ hasCharactersλ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ

textfield에 μž…λ ₯λ˜κ±°λ‚˜ λ˜μ§€ μ•Šκ²Œ λ©λ‹ˆλ‹€.

 

 

ν˜Ήμ‹œλ‚˜ 잘λͺ»λœ λ‚΄μš©μ΄ μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš”.

그럼 이만 πŸ‘‹πŸ» πŸ‘‹πŸ» πŸ‘‹πŸ»

λ°˜μ‘ν˜•