我在我的应用程序中使用自定义字体.它们被复制到bundle并硬编码到appName-info.plist.这种字体在整个应用程序和UIWebView中都能很好地工作.
我正在加载htmlString
[webView loadHTMLString:htmlString baseURL:nil];
我在webView中使用这个字体与css:
fontFamily: fontName
但是,当我尝试使用WkWebView自定义字体无法正常工作时.WkWebView显示随机默认字体.
我尝试使用基本URL中的主束路径加载它并在css中使用font-face - WkWebView仍然显示随机字体.
任何想法如何使自定义字体在WKWebView中工作?
对不起我的英语不好
我的iOS 7+应用程序中有一个模块,它是一个UIWebView.html页面加载了一个创建自定义形状按钮的JavaScript(使用Raphaeljs库).使用UIWebView,我将委托设置为self.webView: shouldStartLoadWithRequest: navigationType:每次按下我的一个自定义按钮时,都会调用委托方法.请求不应由html处理,而是由iOS代码处理.所以我使用了一个请求约定(在这里读取stackoverflow),使用"inapp"作为我的请求的方案.然后我检查主机并采取适当的措施.
这段代码在iOS 7上运行正常.但是iOS 8上的Web视图显示为空白(bug?),所以我决定使用WKWebView for iOS 8设备.Web视图现在渲染得很好(而且速度更快!),但我的按钮没有任何效果.
我尝试过使用- (WKNaviation *)loadRequest:(NSURLRequest *)request,但没有调用.
我找不到UIWebView委托方法的直接等价物webView: shouldStartLoadWithRequest: navigationType:.使用WKWebView处理这些请求的最佳方法是什么?
我有一个使用Web视图的应用程序,可以选择文本.长期以来,您无法在UIWebView中跨块边界选择文本,这一直是一个烦恼.WKWebView似乎通过其配置上的属性解决了这个问题:selectionGranularity.其中一个可能的值是WKSelectionGranularityCharacter:
选择端点可以放置在任何字符边界.
听起来很棒!正是我需要的.除了当我在网络视图中设置它时,我经常无法再选择文本.到底是怎么回事?还有其他我需要设置的东西吗?有没有人想到这个?
更新:我发现了以下错误:
当应用程序中有多个WKWebView selectionGranularity设置为时WKSelectionGranularityCharacter,只有最新加载的WKWebView 可以选择文本.我已将此作为错误18441138提交.
如果有一个单击处理程序附加到bodyWKWebView的HTML内容中的一个元素,该元素selectionGranularity设置为WKSelectionGranularityCharacter,则文本选择在该元素内部不起作用.我已将此归档为错误18440833.
在您在应用程序中的其他位置的UITextView上进入编辑模式之后,WKWebView中的文本选择失败,直到WKWebView重新加载.我已将此归档为错误18468405.
有没有人解决过这些问题?
在iOS 8及更高版本中运行的应用程序中,使用WKWebView类而不是使用UIWebView.
因此,我UIWebView用一个闪亮的新东西取代了我的好老WKWebView.但我认为这是一个简单的练习(简单地交换类和替换委托方法)结果是一个真正的混乱.
当我使用加载HTML字符串时
loadHTMLString(String, baseURL: URL?)
Run Code Online (Sandbox Code Playgroud)
Web视图加载并呈现纯HTML,但它不会加载在其中引用的任何图像或CSS文件htmlString.
这只发生在真实的设备上!
在Simultor中,所有引用的资源都已正确加载.
我htmlString在我的视图控制器类中定义了一个简单的:
let imageName = "image.png"
let libraryURL: URL // The default Library URL
var htmlString: String {
return "<html> ... <img src=\"\(imageName)\" /> ... </html>"
// "..." represents more valid HTML code incl. header and body tags
}
Run Code Online (Sandbox Code Playgroud)
图像存储在根库文件夹中,因此其URL为:
let imageURL = libraryURL.appendingPathComponent(imageName)
Run Code Online (Sandbox Code Playgroud)
现在我加载htmlString到Web视图中:
webView.loadHTMLString(htmlString, baseURL: libraryURL)
Run Code Online (Sandbox Code Playgroud)
即使baseURL设置正确,它也不会加载图像.
可能WKWebView …
在我的Swift iOS应用程序中,我想从远程服务器下载一些动态HTML页面,将它们保存在文档目录中,并从文档目录中显示这些页面.
我用它来加载页面:
var appWebView:WKWebView?
...
appWebView!.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: htmlPath)))
Run Code Online (Sandbox Code Playgroud)
一切都在模拟器上运行,但当我转移到真正的手机时,它只是显示一个空白页面.然后我使用Safari连接到应用程序,发现它抱怨"无法加载资源".
然后我尝试先阅读页面内容htmlPath,然后使用
appWebView!.loadHTMLString()
Run Code Online (Sandbox Code Playgroud)
加载页面.它在HTML页面很简单时有效.但是,如果HTML引用其他内容,即文档目录中的JavaScript文件(具有绝对路径<script src="file:////var/mobile/Containers/Data/Application/762035C9-2BF2-4CDD-B5B1-574A0E2B0728/Documents/xxxxx.js">),则无法加载.
有谁知道为什么会这样,以及如何解决这个问题?
更多信息:
我试图加载.html,.js,.css从设备的本地文件系统中的文件到本机作出反应的WebView组件.我能够获取index.html文件的路径,但将其指定为WebView 的url只会引发错误.我该怎么做?请帮忙!
我正在使用本地文件测试WKWebView,该文件在模拟器中工作,但它在设备中不起作用
@interface EDPresentationViewController ()<WKNavigationDelegate,WKScriptMessageHandler>
@property(nonatomic,strong)WKWebView *webView;
@property(nonatomic,strong)EDPresentationController *presentationController;
@end
@implementation EDPresentationViewController
-(void)viewDidLoad
{
[super viewDidLoad];
self.presentationController = [[EDPresentationController alloc]init];
WKWebViewConfiguration *webConfiguration = [[WKWebViewConfiguration alloc]init];
self.webView = [[WKWebView alloc]initWithFrame:self.view.frame configuration:webConfiguration];
NSURL *presentationFolder = [self.presentationController url];
NSURLRequest *request = [NSURLRequest requestWithURL:presentationFolder];
[self.webView loadRequest:request];
}
Run Code Online (Sandbox Code Playgroud)
我从以下网址授予网址:
NSURL *presentationFolder = [self.presentationController url];
Run Code Online (Sandbox Code Playgroud)
没问题,因为我用UIWebview测试了相同的代码并且有效!
我总是得到同样的错误:
Could not create a sandbox extension for '/'
Run Code Online (Sandbox Code Playgroud)
这不起作用,我想它可以在Objective-C中工作,就像在swift中一样
iOS Webkit不在设备上工作,但在swift的模拟器上运行
任何想法将不胜感激,谢谢
更新2-12-2014
我发现这可能是iOS 8.1中的一个错误,可能会在8.2中修复
https://devforums.apple.com/thread/247777?start=25&tstart=0
我已经测试过将文件移动到临时文件夹,但我没有收到任何错误,但webView只是空的.
我用UIWebView测试了相同的代码(临时文件夹),工作正常!
另外,我试过这个:
我可以发现,这是有效的,因为CSS和javascript嵌入在html中.
我有一个带有a的应用程序WKWebView.在这个应用程序中,我自定义了中显示的选项UIMenuController.无论我做什么,Web视图似乎都会将复制和定义选项添加到菜单中.如果我将自己设置为第一响应者并为所有内容返回NO,我仍然可以复制并定义选项.而且我已经实现了自己的复制选项,根据用户的喜好和选择的内容做了特殊的事情.有没有办法删除这些额外的选项?
更新:我已将此归档为雷达18487289.
由于一些性能问题,我正在尝试升级angularJS2/phonegap应用程序以在iOS上使用WKWebView.
不幸的是,任何对路线导航的调用都不起作用.这包括routerlink和this.route.navigate电话.没有错误被抛出.有没有其他人看过这个和/或可能有一个解决方法?
使用普通的UIWebView,代码工作正常.
我是Angular的新手,所以欢迎任何建议.
以下是一些相关代码的样子:
import { Component } from "@angular/core";
import { Routes, Router, ActivatedRoute } from "@angular/router";
import { LoggedInCallback } from "./service/cognito.service";
export class HomeComponent implements LoggedInCallback {
constructor(public router:Router){
}
isLoggedIn(message:string, isLoggedIn:boolean) {
if (isLoggedIn){
this.router.navigate(['/home/cl']);
}
else {
console.log('HomeComponent: '+message);
}
}
Run Code Online (Sandbox Code Playgroud)
路由模块:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { CategoryListComponent …Run Code Online (Sandbox Code Playgroud) 如何在iOS WKWebView中禁用Web安全?我在mac系统中使用命令"open/Applications/Google\Chrome.app --args --disable-web-security --allow-file-access-from-files"打开铬.但是如何在WKWebView中执行此操作?Thankes!