WKWebView 布局约束问题

问题描述 投票:0回答:4

我创建了一个简单的网络视图应用程序。但有一个小问题我无法修复。它加载第一页没有问题。


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

2017-10-28 23:50:54.289690+0400 BFI Schools[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()
    }
}

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

ios swift uiwebview autolayout
4个回答
9
投票

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


2
投票

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

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

    view.translatesAutoresizingMaskIntoConstraints=false

如果一切正常,请附上您的 XIB 或故事板。

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

    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

        }
    }

2
投票

有趣的是,很多人都会遇到这种情况。我正在运行一个干净的项目,没有额外的控件,但遇到了同样的问题:单击“搜索”(键盘弹出窗口)时存在布局约束。

此处可能表示为 iOS 11 错误:键盘弹出时 WKWebView 约束问题


0
投票

我看过很多关于键盘的答案,答案是是和否。

我已经面对这个问题有一段时间了,问题不是键盘,而是它附带的工具栏,在这个答案中,您将找到一个隐藏该工具栏的黑客解决方法,一旦删除,问题就应该消失离开。

答案:https://stackoverflow.com/a/57226420

© www.soinside.com 2019 - 2024. All rights reserved.