ios - полное содержимое wkwebview можно прокручивать из поля зрения - PullRequest
0 голосов
/ 11 июля 2019

Я создаю гибридное приложение для iOS (WKWebView / HTML5). Все работает отлично, пока я не открываю программную клавиатуру.

Когда программная клавиша открыта, пользователь может (каким-то образом) переместить полный вид за пределы визуальной области (включая заголовок и т. Д.). Когда программная клавиша закрыта, все перемещается назад ...

я уже пробовал - разные подходы к созданию WKWebView (раскадровка или программа) - Я уменьшаю размер WKWebView, если клавиатура открывается

Всегда одинаковое поведение ...

override func viewDidLoad() {
  ....
  ui_webView = WKWebView(frame: CGRect( x: 0, y: safeArea_top, width: view.frame.width, height: view.frame.height - safeArea_top-safeArea_bottom), configuration: webViewCfg )
  ui_webView?.autoresizingMask = [.flexibleWidth, .flexibleHeight]
  ui_webView!.navigationDelegate = self
  ui_webView!.uiDelegate = self
  ui_webView!.scrollView.bounces = false
  ui_webView!.contentMode = .scaleToFill
  view.addSubview(ui_webView!)
  if  let result = components?.url {
      let request = URLRequest(url: result)
      ui_webView!.load(request)
  }
}

показано управление клавиатурой

@objc func keyboardWillShow(notification: NSNotification) {
    if let keyboardHeight = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.height {
      var newFrame = ui_webView?.frame
      newFrame?.size.height = view.frame.height-safeArea_top-safeArea_bottom-keyboardHeight
      ui_webView?.frame = newFrame!
      view.setNeedsLayout()
    }
}

обработка клавиатуры закрыта

@objc func keyboardWillHide(notification: NSNotification) {
    var newFrame = ui_webView?.frame
    newFrame?.size.height = view.frame.height - safeArea_top-safeArea_bottom
    ui_webView?.frame = newFrame!
    view.setNeedsLayout()
}

Поскольку WKWebView начинается с y=safeArea_top, я подумал, что начало, если фиксировано / нет, не может быть перемещено.

Каким-то образом (просто идея): высота вида остается (если клавиатура открыта) и поэтому все можно перемещать вверх?!?

Есть идеи, в чем может быть проблема / как ее решить?

...