99import UIKit
1010import WebKit
1111
12+ public protocol SCDomElementViewDelegate {
13+ func domElementViewDidStartRequest( view: SCDomElementView )
14+ func domElementViewDidFinishRequest( view: SCDomElementView )
15+ func domElementView( view: SCDomElementView , DidFinishRequestWithError: NSError )
16+ }
17+
1218public class SCDomElementView : UIView , WKNavigationDelegate , UIScrollViewDelegate {
1319
1420 public let webView : WKWebView = {
@@ -27,6 +33,8 @@ public class SCDomElementView: UIView, WKNavigationDelegate, UIScrollViewDelegat
2733 return webView
2834 } ( )
2935
36+ public var delegate : SCDomElementViewDelegate ?
37+
3038 public override init ( frame: CGRect ) {
3139 super. init ( frame: frame)
3240
@@ -40,20 +48,22 @@ public class SCDomElementView: UIView, WKNavigationDelegate, UIScrollViewDelegat
4048 }
4149
4250 private func configure( ) {
43- backgroundColor = UIColor . redColor ( )
4451 webView. navigationDelegate = self
4552 webView. scrollView. delegate = self
4653 webView. scrollView. bounces = false
4754
4855 addSubview ( webView)
49- // scrollView.addSubview(webView)
5056 }
5157
5258 private func rectFromId( id: String , callback: ( CGRect ) -> ( ) ) {
5359 var javascript = " function f(){ var r = document.getElementById(' \( id) ').getBoundingClientRect(); return '{{'+r.left+','+r.top+'},{'+r.width+','+r.height+'}}'; } f(); " ;
5460
5561 webView. evaluateJavaScript ( javascript) { result, error in
56- if error != nil { return }
62+ if let error = error {
63+ self . delegate? . domElementView ( self , DidFinishRequestWithError: error)
64+
65+ return
66+ }
5767
5868 if let result = result as? String {
5969 let rect = CGRectFromString ( result)
@@ -64,9 +74,7 @@ public class SCDomElementView: UIView, WKNavigationDelegate, UIScrollViewDelegat
6474 }
6575
6676 public func loadRequest( request: NSURLRequest ) {
67- println ( " wat " )
68- println ( request)
69- println ( webView)
77+ delegate? . domElementViewDidStartRequest ( self )
7078 webView. loadRequest ( request)
7179 }
7280
@@ -76,7 +84,10 @@ public class SCDomElementView: UIView, WKNavigationDelegate, UIScrollViewDelegat
7684 self . webView. scrollView. contentInset = UIEdgeInsets ( top: - frame. origin. y, left: - frame. origin. x, bottom: ( frame. origin. y + frame. size. height) , right: ( frame. origin. x + frame. size. width) )
7785
7886 frame. origin = CGPointZero
87+ self . frame = frame
7988 self . webView. frame = frame
89+
90+ self . delegate? . domElementViewDidFinishRequest ( self )
8091 }
8192 }
8293}
0 commit comments