반응형
텍스트 필드 특수문자 입력 체크하여 버튼 색상 변경
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
}
}
}
반응형
'개발 > SWIFT 아이폰' 카테고리의 다른 글
SwiftUI 이미지 클릭시 다른 이미지로 변경 (0) | 2023.07.17 |
---|---|
SwiftUI 라디오 버튼 생성 및 선택 체크 (0) | 2023.07.17 |
SwiftUI TextField 입력시 버튼 색상, isEnabled 변경 (0) | 2023.07.17 |
SwiftUI TextField 입력 중 Border line 색상 변경 (0) | 2023.07.17 |
SwiftUI TextField border line 설정 (0) | 2023.07.17 |