Sae*_* Oh 6 macos xcode cocoa swift
我决定把我自己的FB的聊天应用程序,只显示https://messenger.com在WebView尝试其他"免费增值"的应用程序后.
我ViewController.swift只有几行代码在Web视图上加载URL
import Cocoa
import WebKit
class ViewController: NSViewController {
@IBOutlet weak var webView: WebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "https://messenger.com")
let request = NSURLRequest(URL: url!);
webView.mainFrame.loadRequest(request);
}
override var representedObject: AnyObject? {
didSet {
// do nothing
}
}
}
Run Code Online (Sandbox Code Playgroud)
除了添加NSAppTransportSecurityinfo.plist的密钥以通过HTTPS连接解锁HTTP流量之外,我还没有做任何其他设置.
请先看看这张图片.
除了两件事,一切看起来都很好.
上传图片不起作用 - 我在图片中标记为1.
共享图片没有显示 - 我在图片中标记为2.
我怀疑可能有一种方法可以监听在WebView文件浏览器中链接的JavaScript 以及类似的东西?
这个我不知道.我登录了Messenger(基本上是Facebook),所以我认为session这不是问题.也许一些jQuery加载问题?
我该怎么做才能解决这些问题?
小智 8
runOpenPanelForFileButtonWithResultListener,文档在这里.在委托方法中,只需创建一个新的NSOpenPanel,如下所示:
func webView(sender: WebView!, runOpenPanelForFileButtonWithResultListener resultListener: WebOpenPanelResultListener!, allowMultipleFiles: Bool) {
let openDialog = NSOpenPanel()
if (openDialog.runModal() == NSOKButton) {
let fileName: String = (openDialog.URL?.path)!
resultListener.chooseFilename(fileName) // Use chooseFilenames for multiple files
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码适合我,这里的好处是你使图像的下载异步.您可以在此处找到有关此概念的更多信息:http://www.raywenderlich.com/79149/grand-central-dispatch-tutorial-swift-part-1和:http://www.raywenderlich.com/79150/grand-中央调度,教程迅速,部分2
编辑
I.您必须使用以下内容创建名为ImageLoader的新类或新的iOS Swift文件:
class ImageLoader {
var cache = NSCache()
class var sharedLoader : ImageLoader {
struct Static {
static let instance : ImageLoader = ImageLoader()
}
return Static.instance
}
func imageForUrl(urlString: String, completionHandler:(image: UIImage?, url: String) -> ()) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {()in
var data: NSData? = self.cache.objectForKey(urlString) as? NSData
if let goodData = data {
let image = UIImage(data: goodData)
dispatch_async(dispatch_get_main_queue(), {() in
completionHandler(image: image, url: urlString)
})
return
}
var downloadTask: NSURLSessionDataTask = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: urlString)!, completionHandler: {(data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
if (error != nil) {
completionHandler(image: nil, url: urlString)
return
}
if data != nil {
let image = UIImage(data: data)
self.cache.setObject(data, forKey: urlString)
dispatch_async(dispatch_get_main_queue(), {() in
completionHandler(image: image, url: urlString)
})
return
}
})
downloadTask.resume()
})
}
Run Code Online (Sandbox Code Playgroud)
}
II.在您的实际viewController中,您可以按照以下代码行从ImageLoaded调用方法'imageForUrl':
ImageLoader.sharedLoader.imageForUrl("http://upload.wikimedia.org/wikipedia/en/4/43/Apple_Swift_Logo.png", completionHandler:{(image: UIImage?, url: String) in
self.myImage.image = image!
})
Run Code Online (Sandbox Code Playgroud)
我从这个链接中获取了代码:https://teamtreehouse.com/community/does-anyone-know-how-to-show-an-image-from-url-with-swift
编辑在webview上加载的图像
这是代码.它对我来说很完美:
override func viewDidLoad() {
super.viewDidLoad()
let myWebView:UIWebView = UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))
myWebView.loadRequest(NSURLRequest(URL: NSURL(string: "https://scontent-vie1-1.xx.fbcdn.net/hphotos-xap1/v/t1.0-9/12144725_10204647881668565_4367944825116750386_n.jpg?oh=5ecdae91f5258ffe0e0355e176f8eb8a&oe=56B007CA")!))
self.view.addSubview(myWebView)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3472 次 |
| 最近记录: |