Skip to content

Commit

Permalink
Merge pull request #877 from mozilla/st3fan/Bug1191767LoginWebViewScr…
Browse files Browse the repository at this point in the history
…olling

Fixes 1191767 - Do not manually handle keyboard overlapping with WKWebView
  • Loading branch information
st3fan committed Aug 7, 2015
2 parents 8e1f539 + 35302d2 commit 5e9feda
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 42 deletions.
48 changes: 7 additions & 41 deletions Client/Frontend/Settings/SettingsContentViewController.swift
Expand Up @@ -90,15 +90,20 @@ class SettingsContentViewController: UIViewController, WKNavigationDelegate {

self.webView = makeWebView()
view.addSubview(webView)
self.webView.snp_remakeConstraints { make in
make.edges.equalTo(self.view)
}

// Destructuring let causes problems.
let ret = makeInterstitialViews()
self.interstitialView = ret.0
self.interstitialSpinnerView = ret.1
self.interstitialErrorView = ret.2

view.addSubview(interstitialView)
layoutInnerViews()
self.interstitialView.snp_remakeConstraints { make in
make.edges.equalTo(self.view)
}

startLoading()
}

Expand Down Expand Up @@ -165,42 +170,3 @@ class SettingsContentViewController: UIViewController, WKNavigationDelegate {
self.isLoaded = true
}
}

extension SettingsContentViewController: KeyboardHelperDelegate {
private func layoutInnerViews() {
let keyboardHeight = KeyboardHelper.defaultHelper.currentState?.intersectionHeightForView(self.webView) ?? 0

self.webView.snp_remakeConstraints { make in
make.left.right.top.equalTo(self.view)
make.bottom.equalTo(self.view).offset(-keyboardHeight)
}
if !isLoaded {
// If the page has loaded, the interstitial view will have been removed.
self.interstitialView.snp_remakeConstraints { make in
make.left.right.top.equalTo(self.view)
make.bottom.equalTo(self.view).offset(-keyboardHeight)
}
}
}

func keyboardHelper(keyboardHelper: KeyboardHelper, keyboardWillShowWithState state: KeyboardState) {
animateInnerViewsWithKeyboard(state)
}

func keyboardHelper(keyboardHelper: KeyboardHelper, keyboardDidShowWithState state: KeyboardState) {
animateInnerViewsWithKeyboard(state)
}

func keyboardHelper(keyboardHelper: KeyboardHelper, keyboardWillHideWithState state: KeyboardState) {
animateInnerViewsWithKeyboard(state)
}

private func animateInnerViewsWithKeyboard(keyboardState: KeyboardState) {
layoutInnerViews()

UIView.animateWithDuration(keyboardState.animationDuration, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
}

1 change: 0 additions & 1 deletion FxAClient/Frontend/SignIn/FxAContentViewController.swift
Expand Up @@ -41,7 +41,6 @@ class FxAContentViewController: SettingsContentViewController, WKScriptMessageHa
}

override func viewDidLoad() {
KeyboardHelper.defaultHelper.addDelegate(self)
super.viewDidLoad()
}

Expand Down

0 comments on commit 5e9feda

Please sign in to comment.