【问题标题】:UIWebViewDelegate ProblemsUIWebViewDelegate 问题
【发布时间】:2011-01-20 19:35:30
【问题描述】:

我在 Interface Builder 中设置了 UIWebView,委托设置为 File's Owner。我在里面设置了 NSLogs 的 webViewShouldStartLoad、webViewDidFinishLoad、webViewDidStartLoad 和 webViewDidFailLoadWithError,以查看它们是否正常工作。 webViewShouldStartLoad 完美运行,但其他三个仅适用于初始加载。如果我单击一个链接转到另一个页面,则其他三个不起作用。所有网页都可以正常加载,但我无法让除 webViewShouldStartLoad 之外的任何 webview 委托功能正常工作有人知道为什么会这样吗?

【问题讨论】:

    标签: objective-c ipad ios


    【解决方案1】:

    文件的所有者是负责 UIWebView 的视图控制器吗?

    确保它是。

    其次,我更喜欢在代码中设置委托。我为新手开发者消除了任何谜团。 Interface Builder 有时可能不清楚,尤其是当您不确定链接在代码中的样子时。请记住,Interface Builder 只是让您免于编写某些代码;您在 IB 中所做的一切都可以在代码中完成。

    在 View Controller 中试试这个,通常在 viewDidLoad 中:

    self.webView.delegate = self;
    

    (你不必叫'self',我喜欢这个线程之外的原因)

    确保拥有 UIWebView 的 View Controller 在头文件中实现 UIWebViewDelegate。

    更新 此外,这来自开发网站:

    “重要提示:您不应该在 UIScrollView 对象中嵌入 UIWebView 或 UITableView 对象。如果这样做,可能会导致意外行为,因为这两个对象的触摸事件可能会混淆和错误处理。”

    你做过吗?

    【讨论】:

    • 是的,文件的所有者是负责 UIWebView 的视图控制器。我也尝试在代码中设置委托,并且视图控制器肯定实现了 UIWebViewDelegate 协议。奇怪的是 webViewShouldStartLoad 工作正常。如果设置委托有问题,那应该行不通,对吧?
    • 你有多个 webView 吗?您是否在正确的位置将代表设置为 nil ?你有没有继承 UIWebView ?除此之外,除非您发布一些示例代码,否则我无能为力。如果您愿意将其发送给我,我可以查看课程文件。
    • 我确实有多个 webView,但它们位于不同的视图控制器中。你是什​​么意思在正确的地方将代表设置为零?为什么以及在哪里必须将委托设置为零?
    • UIWebViewDelegate Doc 中的以下内容:“重要提示:在释放已设置委托的 UIWebView 实例之前,必须先将 UIWebView 委托属性设置为 nil,然后再处理 UIWebView 实例。这例如,可以在处理 UIWebView 的 dealloc 方法中完成。"
    • 我将 [myWebView setDelegate:nil] 添加到 dealloc,但它仍然无法正常工作。还有其他想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多