Skip to content

Commit dc965f8

Browse files
author
Vadym Kurachevskyi
authored
Merge pull request #21 from dsay/feature/fix_X_btton
fix X button interaction
2 parents b8acb7e + 6c2e533 commit dc965f8

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

UserReport/UserReport/Models/Device.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ internal struct Device {
3939
/// Device screen width
4040
var screenWidth: Double
4141

42+
/// Device top inset width
43+
var topInset: CGFloat
44+
45+
/// Device top top Window
46+
var keyWindow: UIWindow?
47+
4248
// MARK: - Init
4349

4450
/**
@@ -56,6 +62,12 @@ internal struct Device {
5662
self.screenDpi = 0
5763
self.screenHeight = Double(UIScreen.main.bounds.size.height * UIScreen.main.scale)
5864
self.screenWidth = Double(UIScreen.main.bounds.size.width * UIScreen.main.scale)
65+
self.keyWindow = UIApplication.shared.windows.first { $0.isKeyWindow }
66+
if #available(iOS 11.0, *) {
67+
self.topInset = keyWindow?.safeAreaInsets.top ?? 0
68+
} else {
69+
self.topInset = 0
70+
}
5971
}
6072

6173
// MARK: - JSON

UserReport/UserReport/UI/SurveyViewController.swift

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,13 @@ internal class SurveyViewController: UIViewController, WKNavigationDelegate, WKS
5757
// Setup views
5858
self.setupWebView()
5959
self.setupCloseButton()
60-
self.changeFrame(rect: self.view.bounds)
6160

62-
// Add views and layouting
61+
// Add views and layout
6362
self.view.backgroundColor = UIColor.black.withAlphaComponent(0.6)
6463
self.view.addSubview(self.webView)
6564
self.view.addSubview(self.closeButton)
65+
66+
self.changeFrame(rect: self.view.bounds)
6667
}
6768

6869
// MARK: - Setup
@@ -84,7 +85,7 @@ internal class SurveyViewController: UIViewController, WKNavigationDelegate, WKS
8485

8586
/// Create and setup `closeButton`
8687
private func setupCloseButton() {
87-
self.closeButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30 ))
88+
self.closeButton = UIButton(frame: CGRect(x: 0, y: 0, width: 35, height: 35))
8889
self.closeButton.setTitle("X", for: .normal)
8990
self.closeButton.backgroundColor = UIColor.white
9091
self.closeButton.setTitleColor(UIColor.black, for: .normal)
@@ -100,13 +101,20 @@ internal class SurveyViewController: UIViewController, WKNavigationDelegate, WKS
100101
* - parameter rect: New rect for recalculation
101102
*/
102103
private func changeFrame(rect: CGRect) {
103-
switch self.displayMode as DisplayMode {
104+
105+
switch displayMode {
104106
case .alert:
105-
self.webView.frame = rect.insetBy(dx: 20, dy: 30).offsetBy(dx: 0, dy: 10)
106-
self.closeButton.center = CGPoint(x: self.webView.frame.maxX, y: self.webView.frame.minY)
107+
webView.frame = rect.insetBy(dx: 20, dy: 30).offsetBy(dx: 0, dy: 10)
108+
closeButton.center = CGPoint(x: webView.frame.maxX - 30,
109+
y: webView.frame.minY + 35)
110+
107111
case .fullscreen:
108-
self.webView.frame = rect
109-
self.closeButton.center = CGPoint(x: self.webView.frame.maxX - 30, y: self.webView.frame.minY + 40)
112+
webView.frame = rect
113+
closeButton.center = CGPoint(x: webView.frame.maxX - 30,
114+
y: webView.frame.minY + Device().topInset + 35)
115+
116+
default:
117+
break
110118
}
111119
}
112120

UserReport/UserReport/UserReport.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ private var sharedInstance: UserReport?
394394
surveyVC.load()
395395
surveyVC.loadDidFinish = { [unowned surveyVC] in
396396
self.surveyStatus = .surveyShown
397-
UIApplication.shared.keyWindow?.rootViewController?.present(surveyVC, animated: true)
397+
Device().keyWindow?.rootViewController?.present(surveyVC, animated: true)
398398
}
399399
surveyVC.loadDidFail = { (error) in
400400
self.surveyStatus = .none

0 commit comments

Comments
 (0)