【问题标题】:UIWebView Delegate Methods not Working [closed]UIWebView 委托方法不起作用[关闭]
【发布时间】:2013-06-25 05:46:34
【问题描述】:

**当我使用 self.myWeview.delegate = self 时, UIWebView 无法在 UIWebView 中加载 URL... 但是如果我将它设置为self.myWeview.delegate = nil, 然后方法(委托)无法加载,但 URL 已加载 这是代码:---

{
   self.myWeview.delegate = nil;
   NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
   NSURLRequest *request = [NSURLRequest requestWithURL:url];
   [myWebView loadRequest:request];
}

这工作正常,但不能调用委托方法。

另一方面

{
   self.myWeview.delegate = self;
   NSURL *url = [NSURL URLWithString:@"http:http://www.google.com"];
   NSURLRequest *request = [NSURLRequest requestWithURL:url];
   [myWebView loadRequest:request];
}

无法加载URL,但调用了委托方法

【问题讨论】:

  • 错误:[NSURL URLWithString:@"google.com"]; 检查第二个代码
  • 从 url 中移除额外的 http:。
  • 你在委托方法中处理什么?
  • 这个问题似乎离题了,因为它是您的代码中的一个错误。

标签: iphone objective-c uiwebview


【解决方案1】:

如果我们不使用这种方法,我最终通过大量实验得到了答案

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

除了所有方法在 UIwebViewDelegate 中都可以正常工作

1. -(void)webViewDidFinishLoad:(UIWebView *)webView
2. -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
3. -(void)webViewDidStartLoad:(UIWebView *)webView

【讨论】:

    【解决方案2】:

    删除多余的http

        {
           self.myWeview.delegate = self;
           NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
           NSURLRequest *request = [NSURLRequest requestWithURL:url];
           [myWebView loadRequest:request];
        }
    

    【讨论】:

    • 实际上,它错误地放置了额外的http,但我没有使用额外的http,但它也给出了相同的结果,我的委托方法不起作用
    【解决方案3】:

    你在调用 URL 时犯了错误……

    试试这个:

    NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
    

    【讨论】:

      【解决方案4】:

      在您的 viewcontroller.h 文件中使用此代码

      @interface ViewController : UIViewController<UIWebViewDelegate>
      

      【讨论】:

        【解决方案5】:

        将委托设置为 self 然后您需要实现委托

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

        并且不要忘记像这样在 .h 文件中确认协议

        @interface YourViewController : UIViewController<UIWebViewDelegate>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多