Notice
Recent Posts
Recent Comments
Link
투케이2K
271. (ios/swift) textFieldDidChange 사용해 실시간 텍스트 필드 글자 변경 이벤트 감지 및 입력 제한 설정 실시 - MaxLength 본문
IOS
271. (ios/swift) textFieldDidChange 사용해 실시간 텍스트 필드 글자 변경 이벤트 감지 및 입력 제한 설정 실시 - MaxLength
투케이2K 2022. 11. 11. 17:09[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
// MARK: - [테스트 함수 정의]
func testMain() {
print("")
print("===============================")
print("[ViewController >> testMain() :: 테스트 함수 수행]")
print("===============================")
print("")
// [로직 처리 수행]
DispatchQueue.main.async {
// [현재 연결된 뷰 화면 얻어오기 : IOS 15 대응]
let scenes = UIApplication.shared.connectedScenes
let windowScene = scenes.first as? UIWindowScene
let window = windowScene?.windows.first
// [뷰 화면 사이즈 확인 실시]
let deviceHeight = self.view.frame.size.height
let deviceWidth = self.view.frame.size.width
// [디바이스 휴대폰 상태 바 높이 사이즈 확인 실시]
var statusBarHeight: CGFloat = 0
var statusBarWidth: CGFloat = 0
if #available(iOS 13.0, *) {
statusBarHeight = window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0
statusBarWidth = window?.windowScene?.statusBarManager?.statusBarFrame.width ?? 0
}
else {
statusBarHeight = UIApplication.shared.statusBarFrame.height
statusBarWidth = UIApplication.shared.statusBarFrame.width
}
// [컴포넌트가 생성될 값 지정 실시]
let componentsHeight = 100.0; // [width 크기]
let componentsWidth = 200.0; // [height 크기]
let componentsX = (deviceWidth - componentsWidth) / 2; // [width 가운데 중앙]
let componentsY = (deviceHeight - statusBarHeight - componentsHeight) / 2; // [height 가운데 중앙]
// [CGRect 사용해 컴포넌트가 생성 될 사이즈 및 위치 설정 실시]
let cgRect = CGRect.init(
x:componentsX, // [x]
y:componentsY, // [y]
width:componentsWidth, // [width]
height:componentsHeight // [height]
)
// [컴포넌트 생성 실시]
let textField = UITextField(frame: cgRect)
// [컴포넌트 속성 부여 실시]
textField.tintColor = .clear // 틴트 색상
textField.layer.borderWidth = 1 // 테두리 굵기
textField.layer.borderColor = UIColor.red.cgColor // 테두리 색상
textField.text = "투케이" // 초기 텍스트 설정
textField.textColor = UIColor.blue // 텍스트 색상
textField.textAlignment = .center // 텍스트 정렬
textField.addTarget(self, action: #selector(self.textFieldDidChange(_:)), for: .editingChanged) // 텍스트 필드 실시간 데이터 변경 이벤트 감지
// [뷰에 추가 실시]
self.view.addSubview(textField)
}
}
// MARK: - [실시간 텍스트 필드 값 변경 감지]
@objc private func textFieldDidChange(_ textField: UITextField) {
// [MaxLeng 길이 값 저장]
let maxLength = 5
// [실시간 입력 값 체크 실시]
if let text = textField.text {
print("")
print("====================================")
print("[ViewController >> textFieldDidChange() :: 텍스트 필드 실시간 데이터 변경 이벤트 감지]")
print("====================================")
print("")
if text.count > maxLength {
// 제한 글자를 넘어가면 자동으로 키보드 내려감
textField.resignFirstResponder()
}
// 초과되는 텍스트 제거
if text.count >= maxLength {
let index = text.index(text.startIndex, offsetBy: maxLength)
let newString = text[text.startIndex..<index]
textField.text = String(newString)
print("")
print("====================================")
print("[ViewController >> textFieldDidChange() :: 텍스트 필드 초과 글자 제거 실시]")
print("maxLength :: \(maxLength)")
print("newString :: \(newString)")
print("count :: \(newString.count)")
print("====================================")
print("")
}
}
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments