我使用UIWebview使用loadRequest:方法加载网页,当我离开那个场景时,我调用[self.webView stopLoading];并释放webView.
在第一次启动的活动监视器中,我已经看到实际内存增加了4MB,并且在多次启动/加载时,实际内存不会增加.它只增加一次.
我检查了webview的保留计数.这是正确的,即0.我认为UIWebView正在缓存一些数据.如何避免缓存或删除缓存数据?或者还有其他原因吗?
使用WKWebView代替UIWebView,我注意到,WKWebView与我相比,它的内容大幅缩小UIWebView.我希望WKWebView停止这样做,并按照字面意思尊重我的CSS值UIWebView.
我在我的原生iOS应用程序中使用Web视图,用于在iPad上显示信息内容的弹出窗口内容.很高兴能够将内容和设计人员提供给他们并说"只需放入一些HTML内容,引用链接的CSS文件".
所有这些在使用时都很有用UIWebView.
但是popovers通常非常紧凑.
在我狭隘的popovers中,内容按比例缩小,就好像我的内容整个网页被小型化以适应.我可以看到WKWebView主要用于在iOS上构建备用浏览器或构建混合应用程序的人,其中WKWebView本质上是接管屏幕.
WKWebView中的放大系数不是可以设置的.当然,用户可以放大,但这会失败.我不是在寻找放大的视口; 我正在寻找与UIWebView一样适合和自动换行的整个内容.
使用WKWebView,在模拟器中,如果我将正文文本大小提升到50px而不是14px,我会看到我想要的大小.但是,这个代码在设备上时甚至没有帮助,因此也不能选择夸大我的CSS大小!
好吧,没什么.它还没有(在)iOS8中被弃用,也许b/c它仍然有用,正如我所经历的那样.但我注意到WKWebView很快.我已经看到一些猜测,写作是UIWebView的墙上.我想:"为什么现在不采用iOS8中更现代的API?"
所以,我现在继续使用UIWebView,但是我想切换到WKWebView,如果我能让它尊重我的CSS大小.
这是UIWebView很好地呈现的原始CSS,但是popover中的哪个WKWebView会以非常小的字体呈现:
body {
font-family: "HelveticaNeue";
font-size: 15px;
line-height: 17px;
color: #000000;
}
h1 {
font-family: "HelveticaNeue-Bold";
font-size: 18px;
line-height: 20px;
color: #000000;
}
h2 {
font-family: "HelveticaNeue-Bold";
font-size: 16px;
line-height: 18px;
color: #000000;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PhoneGap开发一些iPhone应用程序.PhoneGap基本上包装了一个UIWebView - 它运行良好.问题是我的应用程序有几个输入字段只接受数字输入.我真的需要强制数字小键盘而不是接受默认的标准键盘,然后强制用户切换到每个字段上的数字.有谁知道这是否可能?怎么样?
澄清:我知道Apple目前不提供任何API来允许此操作.我想知道创建一个从UIWebView继承的自定义类是否有帮助,或者创建自定义键盘是否会开辟一些可能性?
2009年11月6日更新 - 如下所述,Apple最近更新了safari功能,以便再次支持.所以接受的答案被改变以反映这一点.
<html>
<input type='tel'/>
<input type='number'/>
<input type='email'/>
<input />
</html>
Run Code Online (Sandbox Code Playgroud) 我正在编写一个使用表单身份验证的Asp.net MVC 2应用程序,目前我的iPhone应用程序在通过Web进行身份验证/登录时遇到问题.我们开发了一个使用UIWebView控件的简单iPhone应用程序.在这个阶段,所有应用程序都会导航到我们的Asp.Net网站.简单吧?问题是,用户无法通过登录页面.重复步骤是:
但是用户然后被重定向到BACK登录屏幕!
我已经对此进行了一些广泛的调试,我所知道的是:
cookie被发送到客户端,客户端正在存储cookie.在iPhone调试器中验证了这一点,并使用Javsascript在页面上显示cookie数据.cookie正被发送回服务器.在Visual Studio调试器中验证了这一点.它是正确的cookie(它与设置的相同).User.Identity.IsAuthenticated属性由于某种原因返回false,即使auth cookie包含在Request对象中.我已经确认iPhone应用程序已设置为接受cookie,并且它们在客户端上.
这是有趣的事情:如果您在iPhone上打开Safari浏览器并直接访问我们的网站,它可以正常工作.
它在iPad上也具有相同的行为,因为它没有通过登录屏幕.这种模拟器和设备上的重复.
这个网站已经通过IE 7-8,Safari(适用于Windows),Blackberry,IEMobile 6.5,Phone 7进行了测试,可以找到它.唯一不适用的情况是iPhone应用程序中的UIWebView.
我最近发现我的UIWebView在ITMS链接上窒息.具体而言,在我的应用程序中的UIWebView,如果我浏览到一个网站,如这一个,然后单击"可用在App Store上的"链接,将UIWebView的错误了"错误域= WebKitErrorDomain代码= 101的网址不能显示".
经过一段谷歌搜索,我意识到我需要捕获应用程序链接的请求并让iOS处理它们.我开始时查看该方案是否以"itms"开头-webView:shouldStartLoadWithRequest:navigationType:,但意识到系统可以处理其他类型的应用程序链接.所以我想出了这个,相反:
- (void)webView:(UIWebView *)wv didFailLoadWithError:(NSError *)error {
// Give iOS a chance to open it.
NSURL *url = [NSURL URLWithString:[error.userInfo objectForKey:@"NSErrorFailingURLStringKey"]];
if ([error.domain isEqual:@"WebKitErrorDomain"]
&& error.code == 101
&& [[UIApplication sharedApplication]canOpenURL:url])
{
[[UIApplication sharedApplication]openURL:url];
return;
}
// Normal error handling…
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
-webView:shouldStartLoadWithRequest:navigationType:,它不会发生,所以它有点烦人.如何你处理这些请求?
有没有办法改变背景颜色UIWebView?
IB效果UIWebView行为中设置的颜色都没有:在加载实际内容之前,它显示为白色(在加载内容和呈现内容之间导致白色闪烁).
以编程方式设置背景颜色也不起作用.
这是代码:
@interface Web_ViewViewController : UIViewController {
UIWebView *web;
}
@property (nonatomic, retain) IBOutlet UIWebView *web;
@end
....
-(void)viewDidLoad {
super viewDidLoad;
web.backgroundColor = [UIColor blueColor];
NSURL *clUrl = [NSURL URLWithString:@"http://www.apple.com"];
NSURLRequest *req = [NSURLRequest requestWithURL:clUrl];
[web loadRequest:req];
}
Run Code Online (Sandbox Code Playgroud) 我正在将一个HTML字符串加载到UIWebView中,以便能够查看富文本.到现在为止还挺好.但我有一个小问题:在我的Nib文件中,我将background属性设置为绿色.但是,显示时,背景为白色.然后,在类文件中,我添加了以下内容
[myWebView setBackgroundColor:[UIColor greenColor]];
[myWebView loadHTMLString:myString baseURL:nil];
Run Code Online (Sandbox Code Playgroud)
但是,背景仍然是白色的.我甚至试图扭转顺序,但仍然出现白色背景.
文本大于UIWebView的大小.我注意到当我向下滚过文本的末尾时,背景是绿色的.如何让文本本身的背景为绿色?
你能告诉我我做错了什么吗?非常感谢.
我试图了解如何在iOS8中使用新的WKWebView,找不到太多信息.我读了:
http://developer.telerik.com/featured/why-ios-8s-wkwebview-is-a-big-deal-for-hybrid-development/ http://nshipster.com/wkwebkit/
但这对现有应用程序有何影响?普通的UiWebView会从nitro java脚本引擎获得加速,还是需要进行更改?我们如何处理向后兼容性?
我能找到的所有代码和示例都使用swift,这是强制性的吗?
感谢您对此事的任何帮助!
虽然UIWebView通过使用来获取cookie 似乎很简单NSHTTPCookieStorage.sharedHTTPCookieStorage(),但它似乎WKWebView将cookie存储在其他地方.
我做了一些研究,然后我从NSHTTPURLResponse对象中抓取了一些饼干.但是,这并不包含以下所用的所有Cookie WKWebView:
func webView(webView: WKWebView, decidePolicyForNavigationResponse navigationResponse: WKNavigationResponse, decisionHandler: (WKNavigationResponsePolicy) -> Void) {
if let httpResponse = navigationResponse.response as? NSHTTPURLResponse {
if let headers = httpResponse.allHeaderFields as? [String: String], url = httpResponse.URL {
let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(headers, forURL: url)
for cookie in cookies {
logDebug(cookie.description)
logDebug("found cookie " + cookie.name + " " + cookie.value)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是WKWebsiteDataStore,ios 9中还有一个负责管理cookie WKWebView的类,但是,该类不包含检索cookie数据的公共方法:
let storage = WKWebsiteDataStore.defaultDataStore() …Run Code Online (Sandbox Code Playgroud) 是否可以通过带有POST参数的UIWebView加载页面?我可能只是加载带有参数的嵌入表单并用javascript填充它们并强制提交,但是有更清洁和更快的方法吗?
谢谢!