标签: uiwebview

WKWebView和NSURLProtocol无法正常工作

使用旧的UIWebView时,您可以通过实现自定义NSURLProtocol来捕获请求.我这是为了处理需要身份验证的请求.

我尝试了相同的代码,它不适用于新的WKWebView,但我的协议类根本没有被调用.有人遇到同样的问题,还是有更好的方法来使用WKWebView进行身份验证?

在没有任何修改的情况下,我在decisionPolicyForNavigationResponse委托函数中获得了401响应.我还尝试使用NSURLConnection连接到服务器并使用NSURLConnectionDataDelegate处理身份验证.这可行,但WKWebView不会获取存储的凭据.

uiwebview ios swift ios8 wkwebview

36
推荐指数
1
解决办法
2万
查看次数

UIWebView中的Javascript回调到C/Objective-C

当在UIWebView中检测到某个事件时,有没有办法获得对objective-c的回调?Javascript可以向Objective-C发送回调吗?

javascript cocoa-touch objective-c uiwebview ios

35
推荐指数
2
解决办法
3万
查看次数

UIWebView iOS5更改用户代理

如何在iOS 5中更改UIWebView的用户代理?

到目前为止我做了什么: 使用委托回调,拦截NSURLRequest,创建一个新的url请求并将其用户代理设置为我想要的任何内容,然后下载数据并使用"loadData:MIMEType:...重新加载UIWebView" ".

问题: 这会导致无限递归,我加载数据,调用代理返回,实习生调用委托....

这是委托方法:

- (BOOL)webView:(UIWebView *)aWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {



    dispatch_async(kBgQueue, ^{
        NSURLResponse *response = nil;
        NSMutableURLRequest *newRequest = [NSMutableURLRequest requestWithURL:[request URL]];
        NSDictionary *headers = [NSDictionary dictionaryWithObject:
                                 @"custom_test_agent" forKey:@"User-Agent"];
        [newRequest setAllHTTPHeaderFields:headers];
        [self setCurrentReqest:newRequest];
        NSData *data = [NSURLConnection sendSynchronousRequest:newRequest 
                                             returningResponse:&response 
                                                         error:nil];
        dispatch_sync(dispatch_get_main_queue(), ^{
            [webView loadData:data 
                     MIMEType:[response MIMEType] 
             textEncodingName:[response textEncodingName] 
                      baseURL:[request URL]];
        });
    });

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c uiwebview ios

35
推荐指数
1
解决办法
3万
查看次数

在iOS中更改JavaScript警报对话框标题

是否可以UIWebview在iPhone中更改JavaScript警报标题?

javascript uiwebview ios

35
推荐指数
3
解决办法
3万
查看次数

UIWebView是否可以保存并自动填充以前输入的表单值(例如,用户名和密码)?

我正在构建一个iPhone应用程序,它只是一个UIWebView具有基于表单的登录的现有移动网站.当我在iPhone Safari上登录移动网站时,系统会提示我保存用户名/密码,然后当我稍后返回该网站时自动填充.

我想启用相同的功能UIWebView,但对于我的生活,我无法弄清楚如何做到这一点.有任何想法吗?


按照Michael的基本模型(参见接受的答案),我能够完成这项工作.这是我做的:

设置数据

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; {

    //save form data
    if(navigationType == UIWebViewNavigationTypeFormSubmitted) {

        //grab the data from the page
        NSString *username = [self.webView stringByEvaluatingJavaScriptFromString: @"document.myForm.username.value"];
        NSString *password = [self.webView stringByEvaluatingJavaScriptFromString: @"document.myForm.password.value"];

        //store values locally
        [[NSUserDefaults standardUserDefaults] setObject:username forKey:@"username"];
        [SFHFKeychainUtils storeUsername:username andPassword:password forServiceName:@"MyService" updateExisting:YES error:nil];

    }    

}
Run Code Online (Sandbox Code Playgroud)

获取数据

- (void)webViewDidFinishLoad:(UIWebView *)webView{

    //verify view is on the login page of the site (simplified)
    NSURL *requestURL = [self.webView.request URL];
    if ([requestURL.host isEqualToString:@"www.mydomain.com"]) …
Run Code Online (Sandbox Code Playgroud)

forms iphone autofill uiwebview

34
推荐指数
1
解决办法
1万
查看次数

如何判断UIWebView何时完成渲染(未加载)?

我知道它什么时候加载...(webViewDidFinishLoad),但我想用

[webView.layer renderInContext:UIGraphicsGetCurrentContext()];
Run Code Online (Sandbox Code Playgroud)

从UIWebView创建图像.偶尔我会在webView完成渲染之前获取图像.我可以使用performSelector来延迟图像的获取,但等待的数量是任意的和脆弱的.

objective-c uiwebview ios

34
推荐指数
1
解决办法
6671
查看次数

如何在UIWebView中自动播放YouTube视频

我在这里看到很多关于这个问题的帖子,但仍然找不到这个问题的完美答案.

所以我有一个tableview,每个单元格里面都有一个播放按钮.当用户点击播放按钮时,我会UIWebView向此单元格添加一个,然后播放YouTube视频.

static NSString *youTubeVideoHTML = @"<html>\
    <body style=\"margin:0;\">\
        <iframe class=\"youtube-player\" type=\"text/html\" width=\"%0.0f\" height=\"%0.0f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\">\
        </iframe>\
    </body>\
    </html>";


- (void)playVideoWithId:(NSString *)videoId {
    NSString *html = [NSString stringWithFormat:youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId];

    [self loadHTMLString:html baseURL:nil];
}
Run Code Online (Sandbox Code Playgroud)

问题:

此代码实际上并不像我想要的那样播放视频,只是启动YouTube播放器并使用YouTube红色播放按钮进行显示.只有当用户点击红色按钮时,视频才会开始播放.
因此,用户必须点击两个按钮,直到视频开始 - 而不是最好的用户体验...

就像我说的那样,我看到很多关于这个问题的帖子,有些根本不起作用,有些作品但有一些问题让我感到困扰.

我找到的其中一个工作解决方案是@ilias的这篇文章,他展示了如何使用从文件中加载HTML(而不是像我这样的字符串),这个问题的问题在于我播放的每个视频我需要:
加载htm文件 - >将视频ID嵌入其中 - >将文件写入光盘 - >现在我只能播放视频.

奇怪的是,此解决方案仅在您从文件加载Web视图请求时才起作用,如果我尝试从等于文件内容的字符串加载请求,则该方法无效.

youtube objective-c youtube-api uiwebview ios

34
推荐指数
3
解决办法
4万
查看次数

用于HTML输入表单的iOS键盘中的Go与return按钮

管理HTML <input>表格(用于UIWebView)的iOS键盘是众所周知的,即<input type="tel"></input>用于电话号码.

https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

但我想知道键盘上的蓝色"Go"按钮.有时键盘有一个蓝色的"Go"按钮,有时键盘有一个灰色的返回按钮.有没有机会以编程方式控制此行为?

forms keyboard input uiwebview ios

34
推荐指数
2
解决办法
1万
查看次数

将标题视图添加到WKWebView ScrollView

有没有人设法成功添加页眉或页脚视图WKWebView ScrollView

我目前正在尝试使用此处描述的方法执行此操作,以UIWebView 向类似于Safari和文章的UIWebView添加标题视图.

WKWebView内容视图中使用此方法时,内容视图origin.y已正确更改,但内容在底部被截断.

使用滚动视图内容偏移也是不可能的,因为它会破坏Web视图中固定定位的CSS元素.

uiwebview ios wkwebview

34
推荐指数
1
解决办法
2619
查看次数

即使UIWebView关闭,视频/音频流也不会停止 - iPad

我只在iPad上看到这个问题.同样的东西在iPhone上运行正常.

我在UIWebView中打开我的应用程序的URL.如果URL是普通网页,它可以正常工作.但是,如果URL是远程视频/音频文件的URL,则UIWebView会打开默认播放器,这又是好的.

现在,当我关闭UIWebView(通过点击播放器上的完成按钮)时,流媒体不会停止,音频/视频会在后台继续播放(我看不到它,但它确实在后台继续播放,可以听到它).创建webview的UIViewController也被解除分配(我在dealloc方法中放入了一个日志语句),但是流不会停止.

有人可以帮我解释为什么会发生这种情况吗?当UIWebView关闭时,如何停止音频/视频流?

谢谢.

video-streaming uiwebview ipad

33
推荐指数
1
解决办法
3万
查看次数