【问题标题】:WKWebView LayoutConstraints issueWKWebView LayoutConstraints 问题
【发布时间】:2017-10-28 19:57:43
【问题描述】:

我创建了一个简单的 webview 应用程序。但是有一个小问题,我无法解决。它加载第一页没有问题。


当我点击第一个输入时,程序崩溃,错误代码如下:

2017-10-28 23:50:54.289690+0400 BFI 学校 [68425:3885613] [LayoutConstraints] 无法同时满足约束。 以下列表中的至少一个约束可能是您不想要的。 试试这个: (1)查看每个约束并尝试找出您不期望的; (2) 找到添加了一个或多个不需要的约束的代码并修复它。 (注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档)

我的代码如下:

//
//  ViewController.swift
//  BFI Schools
//
//  Created by Kamandar Abdullayev on 10/28/17.
//  Copyright © 2017 ROOM404.AZ. All rights reserved.
//

import UIKit
import WebKit

class ViewController: UIViewController , UIWebViewDelegate {
    @IBOutlet weak var webView: UIWebView!
    @IBOutlet weak var spinner: UIActivityIndicatorView!

    override func viewDidLoad() {
        super.viewDidLoad()

        view.translatesAutoresizingMaskIntoConstraints=false

        let url = URL(string: "https://www.parent.e-hism.co")!
        let request = URLRequest(url: url)

        if Reachability.isConnectedToNetwork() == true {
            webView.loadRequest(request)
        } else {
            let alert = UIAlertView(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", delegate: nil, cancelButtonTitle: "OK")
            alert.show()
        }
    }

    func webViewDidStartLoad(_ : UIWebView) {
        spinner.startAnimating()
    }

    func webViewDidFinishLoad(_ : UIWebView) {
        spinner.stopAnimating()
    }
}

我已经尝试了在 Internet 上找到的所有帮助,但没有成功。

【问题讨论】:

  • 您确定崩溃了吗?自动布局错误不会真正导致崩溃。

标签: ios swift uiwebview autolayout


【解决方案1】:

根据 Reveal 的以下捕获,这似乎是 Apple 代码中的自动布局问题。我打赌他们会在某个时候修复它。

【讨论】:

  • 问题在 2021 年仍然存在
【解决方案2】:

一般来说,你应该遵循下一个流程

  1. 将 webView 作为子视图添加到 UIViewController 的视图(您可能 已在 XIB 或 Storyboard 中完成)
  2. 在 webView 和 UIViewController 的视图之间添加 Autolayout 约束 代码或在 Interface Builder 中
  3. 另外,请删除

    view.translatesAutoresizingMaskIntoConstraints=false

如果一切正常,请附上您的 XIB 或 Storyboard。

更新 这是我的仅显示 WKWebView 的 ViewController。

    class ViewController: UIViewController {

        lazy var webView: WKWebView = {
            let webView = WKWebView(frame: .zero)
            webView.translatesAutoresizingMaskIntoConstraints = false
            return webView
        }()

        override func viewDidLoad() {
            super.viewDidLoad()

            // layout code
            view.addSubview(webView)
            view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[webView]|", options: [], metrics: nil, views: ["webView": webView]))
            view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[webView]|", options: [], metrics: nil, views: ["webView": webView]))

            // and then code to load request

        }
    }

【讨论】:

  • 我已经尝试过您的建议,但再次没有运气。第一个页面打开没有问题,但是当我点击进入发布框时,繁荣。我已将网址更改为另一个网站,那里也有同样的问题,第一页打开,但输入框点击后崩溃。键盘也没有显示。
  • 你能附上你的XIB或Storyboard截图吗?
  • storyboard screenshot 。导入 UIKit 导入 WebKit 类 ViewController: UIViewController , WKNavigationDelegate{ var webView : WKWebView! override func viewDidLoad() { super.viewDidLoad() let site = "parent.e-hism.co" let url = NSURL(string: site) let request = NSURLRequest(url: url! as URL) webView = WKWebView(frame: self.view.框架) webView.navigationDelegate = self webView.load(请求作为 URLRequest) self.view.addSubview(webView) self.view.sendSubview(toBack: webView) } }
  • 更新了我的答案。包括我这样的 UIViewController 的例子
  • 现在出现错误:systemgroup.com.apple.configurationprofiles 路径的系统组容器是 /Users/maxileft/Library/Developer/CoreSimulator/Devices/D19FA1A9-B940-4E84-8665-1835B61C10B9/data /Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles 2017-10-29 14:37:47.697976+0400 BFI Schools[76569:4189931] *** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]: 这个类对于键 webView 不符合键值编码。'
【解决方案3】:

注意到这种情况发生在很多人身上可能会很有趣。我有一个干净的项目正在运行,没有额外的控件并且遇到了同样的问题:单击搜索时的布局约束(键盘弹出窗口)。

这里可能会显示为 iOS 11 错误:WKWebView constrains issue when keyboard pops up

【讨论】:

  • 这仍然是坏的。 GG苹果。
猜你喜欢
  • 2021-03-26
  • 2020-11-09
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 2020-02-27
  • 1970-01-01
相关资源
最近更新 更多