¿Alguien sabe cómo solucionar este error con Xcode 9 GM? Estoy trabajando en una aplicación hecha con Xcode 8.3, el objetivo de implementación es para iOS 9.3 y nunca antes tuve este problema. Todavía no encuentro ninguna información aquí o en los foros de Apple :(
Editar: Este error se produjo cuando puse un WKWebView en el generador de interfaces, no si lo uso mediante programación.
Edición 2: Bueno, finalmente no es un error, consulte la respuesta de Quinn a continuación para obtener más información sobre este comportamiento. Gracias a él por la explicación.
Respuestas:
El error es el comportamiento correcto, y no un error en Xcode 9. Aunque WKWebView se introdujo en iOS 8, hubo un error
-[WKWebView initWithCoder:]
que solo se corrigió en iOS 11, que siempre fallaba en el tiempo de ejecución y, por lo tanto, impedía configurar uno dentro de Interface Builder.https://bugs.webkit.org/show_bug.cgi?id=137160
En lugar de permitir a los desarrolladores construir algo en IB que se rompería en tiempo de ejecución, es un error de construcción. Es una limitación inconveniente ya que iOS 11 se lanzó recientemente, pero realmente no hay otra buena opción.
La solución para los objetivos de implementación anteriores es continuar agregando el WKWebView en el código, como @ fahad-ashraf ya describió en su respuesta:
https://developer.apple.com/documentation/webkit/wkwebview
fuente
Esto parece ser un error en Xcode 9 y también estaba presente en las versiones beta. Solo obtendrá el error de compilación si está creando un WKWebView a través del guión gráfico. Si crea progmáticamente WKWebView en el archivo de clase ViewController correspondiente, debería poder construir en versiones de iOS inferiores a iOS 11. Este es el enfoque dado en el sitio web de Apple sobre cómo lograr esto:
Entonces debería poder implementar la funcionalidad WKWebView como lo haría normalmente.
Fuente: https://developer.apple.com/documentation/webkit/wkwebview
fuente
super.loadView()
super.loadView()
tiene que estar al principio. Sin eso, nada se muestra.webview
debajo de mi barra de navegación? Esta solución tuya funciona pero cubre toda la pantalla.Si desea realizar una costumbre
UIViewController
con otros componentes además, puede hacer un "contenedor" a través del guión gráfico llamado, por ejemplowebViewContainer
:fuente
[LayoutConstraints] Unable to simultaneously satisfy constraints
, no olvide la líneawebView.translatesAutoresizingMaskIntoConstraints = false
. Si lo deja establecido en verdadero, creará un conjunto completo de restricciones para ustedwebView
automáticamente, lo que entrará en conflicto con las restricciones que agregue mediante programación. Apple Docs .Si se trasladó de un objetivo anterior a iOS 11.0 y todavía recibe este error, utilice la solución a continuación.
fuente
Me he enfrentado al mismo problema, pero puede abordarse si agregamos WKWebView mediante programación.
Haga el diseño que desee hacer en el guión gráfico, pero deje espacio para WKWebView , en esa área arrastre y suelte una vista y asígnele el nombre webViewContainer y declare estas dos propiedades,
Ahora cree y agregue webView así:
La función createWebView se declara como,
Ahora agregue este webView recién creado a su containerView, así:
Finalmente, simplemente cargue su URL de esta manera,
Gracias por leer esto.
fuente
WebKit se introdujo en iOS 8 pero se lanzó con un error que provocó un bloqueo en tiempo de ejecución. Si está utilizando Xcode 9/10 , la configuración de su proyecto es compatible con menos de iOS 11 y si está tratando de agregar WKWebView utilizando el generador de interfaces. Xcode muestra inmediatamente un error en tiempo de compilación.
WKWebView antes de iOS 11.0 (NSCoding Support estaba roto en la versión anterior)
Aunque WKWebView se introdujo en iOS 8 , hubo un error en - [WKWebView initWithCoder:] que solo se solucionó en iOS 11 .
La resolución es que debe agregar WKWebView a través del código (solo si es compatible con iOS 11). Eso en realidad suena extraño.
Otra solución es cambiar las compilaciones de documentos de Interface Builder para la opción a iOS 11 y posterior (si está migrando desde un destino anterior a iOS 11 y sigue obteniendo el mismo error).
fuente
// Para Swift
// Para el objetivo C
fuente
Esto debería ser un comentario sobre la respuesta de Kampai, pero no tengo suficientes puntos de reputación para comentar.
Además de las versiones explícitas de iOS, el menú desplegable 'Compilaciones para' en el 'Inspector de archivos' también contiene la opción Destino de implementación (..) . Prefiero administrar versiones en un solo lugar si es posible y de todos modos quería cambiar el objetivo de compilación. Estaba completamente confundido, todavía decía Destino de implementación (9.3) aunque cambié la entrada correspondiente en la configuración general a 11.0 .
El reinicio de XCode (11.3.1) fue necesario para que todo funcionara como se esperaba, la opción 'Destino de implementación (11.0)' estaba disponible (y 9.3 desapareció). Después de la selección, todo funcionó como se esperaba.
fuente
fuente
UIWebView está en desuso en iOS11 y WKWebView funciona solo en iOS11; esto suena como un error en Xcode GM.
fuente