gpt4 book ai didi

ios - webview.URL?.absoluteString 返回 nil

转载 作者:行者123 更新时间:2023-11-28 06:46:08 25 4
gpt4 key购买 nike

我的 webview.URL?.absoluteURL.absoluteString 返回 nil。这是一个 WKWebview,而不是一个 UIWebVIew,因此 webview.request?.URL?.absoluteString 对此不起作用。我也尝试过 webview.URL?.absoluteString

URL 在另一个 UIViewController 类中设置。 webview 本身加载正确,所以我知道 .URL 不是零。 (使用 cmd/ctrl+f '//Problem' 查找行):

override init(frame: CGRect) {
super.init(frame: frame)
gestureRecognizers = [UIPanGestureRecognizer(target:self, action:"moveWindow:")]
//Change aspects of our view (width, height, color, etc)
header.frame.size.width=frame.size.width
header.frame.size.height=45
header.layer.cornerRadius = 4
//addSubview(header)
windowMask.frame=frame
stackButton.frame=frame
windowMask.layer.cornerRadius = 6
windowMask.clipsToBounds=true

layer.shadowColor = UIColor.blackColor().CGColor
layer.shadowOpacity = 1
layer.shadowRadius = 5
layer.shadowOffset = CGSizeMake(0, 1);
layer.cornerRadius = 6
backgroundColor = UIColor(patternImage: UIImage(named: "Window Texture.png")!)
//opaque=false
//backgroundColor = UIColor.clearColor()
addSubview(windowMask)
dragArea.frame.size.width=frame.size.width-120
dragArea.frame.origin.x=40
dragArea.frame.origin.x=40
//addSubview(dragArea)
//Our webview for... well, isn't it obvious?
webview.frame = CGRectMake(0, 40, frame.width, frame.height-40)
webview.allowsBackForwardNavigationGestures=true
windowMask.frame=CGRectMake(0, 0, frame.width, frame.height)
windowMask.addSubview(webview)
//The back button
bbutton.setImage(UIImage(named: "Back"), forState: .Normal)
bbutton.frame = CGRectMake(5, 5, 30, 30)
windowMask.addSubview(bbutton)
bbutton.addTarget(self, action: "bbuttonPressed:", forControlEvents: .TouchUpInside)
//The large button to select a window in the Stack menu
stackButton.addTarget(self, action: "stackSelected:", forControlEvents: .TouchUpInside)
//The resize button for making the window fullscreen
rbutton.setImage(UIImage(named: "Max"), forState: .Normal)
rbutton.frame = CGRectMake(frame.width-60, 7, 25, 25)
windowMask.addSubview(rbutton)
rbutton.addTarget(self, action: "rbuttonPressed:", forControlEvents: .TouchUpInside)
//The X button for closing a window
xbutton.frame = CGRectMake(frame.width-35, 5, 30, 30)
xbutton.setImage(UIImage(named: "Close"), forState: .Normal)
windowMask.addSubview(xbutton)
xbutton.addTarget(self, action: "xbuttonPressed:", forControlEvents: .TouchUpInside)
//The button for adjusting window size
abutton.frame = CGRectMake(frame.width-20, frame.height-20, 20, 20)
abutton.setImage(UIImage(named: "Resize"), forState: .Normal)
windowMask.addSubview(abutton)
abutton.addTarget(self, action: "abuttonDragged:", forControlEvents: .TouchDown)
//The task button
taskButton.frame.size=CGSizeMake(60,60)
taskButton.backgroundColor=UIColor.whiteColor()
taskButton.frame.origin=CGPointMake(CGFloat(system.windows.count)*60,60)
taskButton.addTarget(self, action: "taskSelected:", forControlEvents: .TouchDown)
//Problem here:
let imgURL = NSURL(string: "http://google.com/s2/favicons?domain="+(self.webview.URL?.absoluteString)!)
print(self.webview.URL?.absoluteURL.absoluteString)
let imageRequest: NSURLRequest = NSURLRequest(URL: imgURL!)
NSURLConnection.sendAsynchronousRequest(
imageRequest, queue: NSOperationQueue.mainQueue(),
completionHandler: {(response: NSURLResponse?,data: NSData?,error: NSError?) -> Void in
if error == nil {
self.taskButton.setImage(UIImage(data: data!),forState: .Normal)
}
})
UIView.animateWithDuration(0.2, animations: {
self.frame.origin.y=50
self.taskButton.frame.origin.y=0
})
}

另一个 UIViewController 类中设置 URL 的函数。 Web View 中的站点本身可以​​正确加载。

func addWindowButtonPressed(sender: UIButton!) {
let url = NSURL(string: "https://google.com")
let request = NSURLRequest(URL: url!)
let newView = Window(frame: CGRectMake(self.view.frame.size.width/2-200,self.view.frame.size.height, 400, 300))
if !system.stacked {
view.addSubview(newView)
newView.webview.loadRequest(request)
system.windows.append(newView)
taskView.addSubview(newView.taskButton)
newView.windowID=system.windows.count
taskView.contentSize.width=CGFloat(system.windows.count)*60
}
taskView.contentSize.width=CGFloat(system.windows.count)*60
}

最佳答案

您应该使用 URL 的 absoluteString 属性。

webView.URL?.absoluteString

URL 只读属性将在您调用 loadRequest 后获得一个值。这是一个示例:

func loadWebPage(url : NSURL!)
{
let urlbefore = webView.URL?.absoluteString
print (urlbefore)

let theRequest = NSMutableURLRequest(URL:url, cachePolicy:NSURLRequestCachePolicy.ReturnCacheDataElseLoad, timeoutInterval:15.0)
self.webView.loadRequest(theRequest)

let urlafter = webView.URL?.absoluteString
print (urlafter)
}

这将打印以下内容:

nil
Optional("https://www.google.com/")

关于ios - webview.URL?.absoluteString 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36296569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com