개발/SWIFT 아이폰 / / 2023. 7. 17. 15:06

SwiftUI TextField 특수문자 입력 체크

반응형

텍스트 필드 특수문자 입력 체크하여 버튼 색상 변경

struct ContentView: View {
    @State private var inputText: String = ""
    @State private var isInputFocused: Bool = false
    
    var body: some View {
        VStack {
            TextField("텍스트를 입력하세요", text: $inputText, onEditingChanged: { editing in
                isInputFocused = editing
            })
            .textFieldStyle(PlainTextFieldStyle())
            .foregroundColor(.blue)        // 글자 컬러
            .accentColor(.blue)
            .padding(10)    // 외부 패딩 적용
            .font(.system(size: 20, weight: .heavy, design: .default))
            .background(RoundedRectangle(cornerRadius: 15).fill(Color.gray))
            .overlay(
                RoundedRectangle(cornerRadius: 15)
                    .stroke(lineWidth: 2)
                    .foregroundColor(isInputFocused ? .blue : .gray) // 입력 모드에 따라 색상 변경
            )
            .padding(10) // 내부 패딩 적용
            
            Button(action: {
                print("입력된 텍스트: \(inputText)")
            }) {
                Text("출력하기")
                    .padding()
                    .foregroundColor(.white)
                    .background(containsSpecialCharacters() ? Color.red : Color.blue) // 조건에 따라 색상 변경
                    .cornerRadius(10)
            }
            .padding()
            .disabled(containsSpecialCharacters()) // 조건에 따라 클릭 가능 여부 설정
        }.background(Color.white)
    }
    
    // 영어, 숫자 정규식
    func containsSpecialCharacters() -> Bool {
        do {
            let pattern = ".*[^A-Za-z0-9].*"
            let regex = try NSRegularExpression(pattern: pattern)
            let range = NSRange(location: 0, length: inputText.utf16.count)
            return regex.firstMatch(in: inputText, options: [], range: range) != nil
        } catch {
            return false
        }
    }
}
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유