present()로 띄운 UIViewController의 WKWebView에서 사진 첨부를 하면 UIViewController가 닫혀(dismiss()) 버린다.

present() 로 띄운 UIViewController에 있는 UIWebView/WKWebView에서 input type=”file” / 을 눌러서 사진을 첨부하려 하면 해당 UIViewController까지 함께 닫혀 버리는 문제가 있습니다.

이 문제는 iOS 8.0.2 부터 발생한 문제로… iOS 9는 물론 iOS 10에서도 고쳐지지 않았죠.

이쯤되니 OS 자체 버그가 아니라 의도된 것 같다는 생각이 듭니다. 의도된 것이 맞다면 어떤식으로 개발을 해야 되는 건지 모르겠네요.

그래서 사용한 임시 방법.

dismiss()를 override 해버리는 방법입니다.

[code]// MARK: – Variable
var isDismiss: Bool = false

// MARK: – Override
public override func dismiss(animated flag: Bool, completion: (() -> Void)? = nil) {
if !self.isDismiss && (self.presentedViewController == nil || self.presentedViewController == self) {
return
}

self.isDismiss = false
super.dismiss(animated: flag, completion: completion)
}

// MARK: – Function
func close(animated: Bool, completion: (() -> Void)? = nil) {
self.isDismiss = true
self.dismiss(animated: animated, completion: completion)
}
// MARK: – Action
@IBAction func close(_ sender: UIButton) {
self.close(animated: true)
}[/code]

편법이지만 제일 간단한 방법이죠…

2 Replies to “present()로 띄운 UIViewController의 WKWebView에서 사진 첨부를 하면 UIViewController가 닫혀(dismiss()) 버린다.”

  1. 코드 설명 조금만 부탁드려도 될까요? ㅠㅁㅠ;; 여러모로 uiwebview보다는 wkwebview가 제 프로젝트에 더 맞는거 같은데 이부분 때문에 골머리를 썩고 있네요. 일단 그냥 코드 복붙을 해봤는데 해결이 안되네요.. 이해가 필요할 거 같아서 도움을 요청합니다… 현재 포스팅만 봤을 때는 어떤식의 임시방편인지 잘 모르겠어요.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다