iOS 패스워드 입력 시 키보드 표시가 안될때!!
버그 리포팅이 들어왔는데, 회원 가입 시 패스워드 입력이 안된다는 것이며, 실제로 확인 결과 패스워드 입력 시 키보드 영역이 배경색(회색)으로만 나오지만, 일정 시간이 지나면 키보드가 표시된다.
그리고 로그인할때의 패스워드 키보드는 잘 표시가 되는데, 회원가입시 패스워드의 입력이 문제가 되는 점이다. 확인해보니 두 View의 코드상의 차이점은 없었으며, 이것을 어떻게 OS에서 감지하는지 잘 모르겠다.
아시는 분은 댓글로 알려주시면 감사하겠습니다.
PROBLEM
[AutoFill] Cannot show Automatic Strong Passwords for app bundleID: test.dev due to error:
iCloud Keychain is disabled
키보드가 나타날때 콘솔창에 위와 같은 메세지가 표시된다.
iOS12부터 패스워드를 자동으로 강력한 패스워드(Strong Password) 타입으로 자동으로 만들 수 (AutoFill) 있는데, 강력한 패스워드가 자동으로 생성되면, 해당 내용은 iCloud Keychain 에 저장된다. 문제는 iCloud Keychain에 접근권한이 없어서 발생하는 문제로 파악된다.
이 부분은 좀 더 조사후에 다시 해당 포스팅에 첨부하도록 할 것이다.
ANSWER (Temp)
찾아보니 일단 임시로 해결 가능한 방법이 2가지가 있다.
1. isSecureTextEntry 값 변경
해당 ViewController의 ViewDidLoad 이나 ViewWillAppear 부분에서 텍스트 필드의 isSecureTextEntry 를 false로 하여 일반 텍스트필드로 설정 후에, 해당 텍스트필드의 입력이 활성화 될 때(textFieldShouldBeginEditing) 해당 텍스트 필드의 isSecureTextEntry를 true로 변경.
하지만 적용이 안될 경우가 있음.
2. textContentType 값 변경
해당 텍스트 필드의 textContentType 값을 oneTimeCode 타입으로 설정함. 단 해당 값은 12버전부터 사용할 수 있으므로, 아래와 같이 사용을 권함
if #available(iOS 12.0, *) {
passwordField.textContentType = .oneTimeCode
}
oneTimeCode란, iOS12에서 추가된 타입으로 문자인증이나 본인인증을 할때 사용하는 일회성 인증코드같은 타입니다.
해당 타입은 키체인에 저장할 필요가 없으므로 secure 타입이면서 키보드가 제대로 표시된다.