공부방/iOS

iOS WKWeview not show keyboard when Input box call focus() issue (iOS WKWeview input focus() 호출해도 키보드 안보이는 현상)

soycrab 2019. 9. 24. 18:13

일단 개발중인 App 이 

 

웹뷰 하단에 버튼이 있고, 

 

하단에 버튼을 누를시 자바 스크트 함수를 호출해서 

 

input box 를 띄우는 작업을 하는데, 

 

이상하게 input box 가 화면에 보여 진 상태 인데도 

 

키보드가 나타나질 않았다. 

 

그래서 focus() 대신 click() 도 호출해보고 

 

iOS 쪽에서 직접 focus 도 호출해보고 별에 별짓을 다했는데, 

 

처음 한번 키보드가 뜨고 다음 호출부터는 키보드가 뜨지 않는

 

문제가 있었다. 

 

이문제의 해결코드는 다음과 같다. 

 

아래 코드는 한줄이라도 빠지면 동작하지 않는다. 

 

꼭 순서를 지켜 사용하기를 바란다. 

 

해당 해결방법이 검색을 아무리 해도 안되서 고생을 했다. 

 

다른 사람은 고생하지 말기를....

 

 UIApplication.shared.sendAction(#selector(UIView.resignFirstResponder), to: nil, from: nil, for: nil)

 DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {

                        self.wkWebView.becomeFirstResponder()

                        let scriptSource = "appInterface.onSearch()"

                        self.wkWebView?.evaluateJavaScript(scriptSource) { (result, error) in

                            if let errorMessage = error?.localizedDescription {

                                Utils.print("OnSearchCheckerError = \(errorMessage)")

                            }

                        }

}

반응형