Tag: wkwebview

拉到刷新不工作在iOS WebView

我已经在iOS中实现了一个简单的WKWebView 。 var refreshControl = UIRefreshControl() refreshControl.addTarget(self, action: Selector("refreshWebView"), forControlEvents: UIControlEvents.ValueChanged) 这是在viewDidLoad() 和相应的refreshWebView函数。 但是当我在手机或模拟器上运行它,无论我拖动多less,都没有拉动刷新动作。 没有什么是触发的,它几乎感觉就像我卡在屏幕的上限。 哪里可以出错?

为两个单独的cookie存储(UIWebView或WKWebView)

我想在不同的webViewlogin同一网站的许多帐户。 例如,我有Tab Bar Controller包含三个视图控制器和每个视图控制器包含webView 。 例如,我在每个类中embedded了webView stackoverflow url。 用户如何使用这三个webView同时login到不同的账户? 我试过这个,但我可以一次login一个用户。 我发现我需要为每个UIWebView创build单独的cookie ,但主要答案是在objective-c中,而不是我想要的正确答案。 例如( 第一个 第二个 第三 )任何人都可以告诉我,我怎么能做到这一点? class FirstViewController: UIViewController , UIWebViewDelegate{ @IBOutlet weak var webView: UIWebView! @IBOutlet weak var activityIndicator: UIActivityIndicatorView! override func viewDidLoad() { webView.delegate = self let requestURL = NSURL(string: "http://stackoverflow.com") let request = NSURLRequest(URL: requestURL!) activityIndicator.hidesWhenStopped = true activityIndicator.startAnimating() webView.loadRequest(request) } […]

为什么我不能将WKWebView保存到?

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; [prefs setObject:self.webView forKey:@"webView"]; 上面的代码是保存一个WKWebView对象,但我得到一个编译器错误: 2014-11-08 14:58:52.561恢复[2431:482391]属性列表格式无效:200(属性列表不能包含CFTypetypes的对象)2014-11-08 14:58:52.564恢复[2431:482391 ]试图设置一个非属性列表对象>作为关键的webView的NSUserDefaults / CFPreferences值2014-11-08 14:58:52.566恢复[2431:482391] *终止应用程序由于未捕获的exception“NSInvalidArgumentException”,原因: '尝试将非财产清单对象>重点webView的' *第一掷调用堆栈:(0x2c491c1f 0x39c78c8b 0x2c491b65 0x2c4cbe51 0x2c436599 0x2c4358d7 0x2c4cc0d1 0x2c4cb769 0x2c4ce95b 0x2c4ce875 0x2d0eab69 0x66bdf 0x2f981c2b 0x2f981bd1 0x2f96c863 0x2f98163d 0x2f981317 0x2f97abe1 0x2f9513dd 0x2fbc4c29 0x2f94fe39 0x2c458377 0x2c457787 0x2c455ded 0x2c3a4211 0x2c3a4023 0x3379d0a9 0x2f9b01d1 0x66ead 0x3a1f8aaf)libc ++ abi.dylib:以NSExceptiontypes的未捕获exception终止 我怎样才能保存WKWebView并恢复它的历史不变? 编辑: 8个月过去了,这个问题没有解决办法… 编辑2: 我正在做一个网页浏览器 […]

Xcode 9 GM – WKWebView NSCoding支持在以前的版本中被打破

有谁知道如何解决这个错误与Xcode 9 GM? 我正在使用Xcode 8.3制作的应用程序,部署目标是针对iOS 9.3,之前从未遇到过这个问题。 我没有在这里或在苹果论坛上find任何信息呢:( 编辑:当我把一个WKWebView到接口生成器,而不是如果我以编程方式使用它,这个错误。 编辑2:嗯,它终于不是一个错误,请参阅下面的Quinn的答案有关于此行为的更多信息。 感谢他的解释。

在长按识别器结束之后,wkwebview在调用正在导航行为

我试图覆盖原来的wkwebview操作… 首先,我通过webView.evaluateJavaScript webView.evaluateJavaScript("document.body.style.webkitTouchCallout='none';", completionHandler: nil)禁用了原始的wkactionsheet 然后我初始化一个长按手势识别器(它完美的工作),我创build了我自己的操作表。 我用decidePolicyForNavigationAction来获取点击链接的url: func onLongPress(gestureRecognizer:UIGestureRecognizer){ if gestureRecognizer.state == UIGestureRecognizerState.Began { longPressSwitch = true } } func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) { if(navigationAction.navigationType == .LinkActivated) { longPressAcUrl = navigationAction.request.URL!.absoluteString if(longPressSwitch == true) { let ac = actionMenu(self) self.presentViewController(ac, animated: true) { } decisionHandler(.Cancel) longPressSwitch = false } […]

JS在Swift中调用一个函数

我知道如何从JS发送消息到本地IOS快速应用程序: func userContentController(userContentController: WKUserContentController!, didReceiveScriptMessage message: WKScriptMessage!) { println("JavaScript is sending a message \(message.body)") } 和JS: webkit.messageHandlers.callbackHandler.postMessage("Hello from JavaScript"); 我的问题是:是否有可能直接调用本地应用程序中的函数,而不是在我的示例代码中接收消息。 说我想在JS中使用像这样的东西: webkit.messageHandlers.someFunctionName() 我问的原因是,在Android中它是如何工作的

WKWebView – Javascript确认和警报不起作用

我正在使用WKWebView来打开example.com,并在那里我有一个testing链接,应该打开JS警报,但我不能让它显示在设备上,它只有当我查看网站从浏览器。 我正在使用WKUIDelegate,并将这段代码添加到ViewController.swift文件中: func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: (() -> Void)) { NSLog("Hello") } 当我单击产生JS警报的链接时,我在XCode控制台中看不到任何东西。 我错过了什么?

无法更改iOS 9 beta / 9.3上的WKWebView的滚动速度

在iOS 8上,下面的代码工作正常,它可以滚动更多的惯性。 webView.scrollView.decelerationRate = UIScrollViewDecelerationRateNormal; 至于iOS 9 beta 3,这个代码是没有意义的,即使没有错误。 这是一个错误还是有其他方法? 注意:UIWebView的滚动速度可以在两个版本上更改两种types。

WKWebView持久存储Cookie

我在我的本地iPhone应用程序,允许login/注册的网站上使用WKWebView,并将会话信息存储在Cookie中。 我想弄清楚如何持久存储cookie信息,所以当应用程序重新启动时,用户仍然可以访问他们的Web会话。 我在应用程序中有2个WKWebViews,他们共享一个WKProcessPool。 我从一个共享进程池开始: WKProcessPool *processPool = [[WKProcessPool alloc] init]; 然后对于每个WKWebView: WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init]; theConfiguration.processPool = processPool; self.webView = [[WKWebView alloc] initWithFrame:frame configuration:theConfiguration]; 当我使用第一个WKWebViewlogin时,稍后再传递给第二个WKWebView,这个会话被保留,所以cookies被成功共享。 但是,当我重新启动应用程序时,会创build一个新的进程池,会话信息被销毁。 有什么办法让会话信息通过应用程序重新启动持续?

WKWebView内容加载function永远不会被调用

我试图得到一个函数,我的内容WKWebView完全加载后调用。 我在Apple Swift WKNavigation文档中find了“didFinishNavigation”函数。 func webView(webView: WKWebView!, didFinishNavigation navigation: WKNavigation!) { println("WebView content loaded.") } 但是这个函数永远不会被调用。 import UIKit import WebKit class ViewController: UIViewController WKNavigationDelegate { override func loadView() { super.loadView() self.webView = WKWebView(frame:self.containerView.frame, configuration: WKWebViewConfiguration()) self.containerView.addSubview(webView!) self.containerView.clipsToBounds = true } override func viewDidLoad() { super.viewDidLoad() var url = NSURL(string:"http://google.com/") var req = NSURLRequest(URL:url) self.webView!.loadRequest(req) } […]