UIWebView 에서 WKWebView 로 마이그레이션 중 문제가 발생했습니다. WKWebView 에서 web elment 중 input element(A) 를 터치하게 되면 키보드가 올라옵니다. 이후 유저는 텍스트를 입력 후 키보드 우측 하단의 키보드 내림 버튼을 누르게 됩니다.
이후 다른 input element(B) 를 터치하게 되면 아주 빠르게 A input element 에 focus In & Out 이 발생하고 B input element 에 focus In 이 됩니다.
만약 A input element 에 focus 가 잡힐때 처리되는 코드가 있다면 해당 코드가 실행이 되어 버립니다.
View 의 빈공간을 터치하여 키보드를 닫는 [view endediting:YES] 도 마찬가지 현상이 일어납니다.
근본적인 해결방법은 아니지만 키보드가 hide 될 때 focus In & Out 이벤트 코드가 걸려 있는 A element 를 blur() 처리하는 자바스크립트를 실행하면 B input element 를 터치하더라도 정상적으로 B input element 의 focus In 이벤트만 발생합니다.
// 키보드 hide 이벤트가 발생할 때
[self.wkWebView evaluateJavaScript:@"document.getElementById('A').blur()"
completionHandler:^(id result, NSError *error) {
if (error != nil) {
NSLog(@"evaluateJavaScript error : %@", error.localizedDescription);
}
}];