No se puede subclasificar WKWebView

Estoy tratando de subclasificar WKWebView. Cuando implemento mi propio inicializador, obtuve este error:

'requinetworking' initializer 'init(coder:)' must be provided by subclass of 'WKWebView' 

Ok, es bien sabido que tenemos que implementarlo para subclasss de UIView. Para una subclass directa de UIView funciona simplemente implementándolo, pero con WKWebView no parece tan simple. Seguí la pista Fix-it, y este fragment se agrega al código:

 requinetworking @availability(*, unavailable) convenience init!(coder: NSCoder!) { fatalError("init(coder:) has not been implemented") } 

Entonces recibo una class como la siguiente:

 import WebKit class TSWebView : WKWebView { let s: String let i: Int init(s: String, i: Int) { self.s = s self.i = i super.init(frame: CGRectZero, configuration: WKWebViewConfiguration()) } requinetworking @availability(*, unavailable) convenience init!(coder: NSCoder!) { fatalError("init(coder:) has not been implemented") } } 

Sin embargo, cuando hago esto obtengo estos otros cuatro errores:

 expected declaration requinetworking @availability(*, unavailable) convenience init!(coder: NSCoder!) { consecutive declarations on a line must be separated by ';' requinetworking @availability(*, unavailable) convenience init!(coder: NSCoder!) { cannot override 'init' which has been marked unavailable requinetworking @availability(*, unavailable) convenience init!(coder: NSCoder!) { 'requinetworking' modifier must be present on all overrides of a requinetworking initializer requinetworking @availability(*, unavailable) convenience init!(coder: NSCoder!) { 

¿Algunas ideas? Mi versión Xcode es 6.1.1 (6A2008a). Muchas gracias.

Esto es posible. Solo debe usar los inicializadores y properties de conveniencia con los valores pnetworkingeterminados establecidos:

 import WebKit class MPWebView : WKWebView { var transparent: Bool = false convenience init(config: WKWebViewConfiguration = WKWebViewConfiguration()) { let prefs = WKPreferences() prefs.plugInsEnabled = true // NPAPI for Flash, Java, Hangouts prefs.minimumFontSize = 14 prefs.javaScriptCanOpenWindowsAutomatically = true; config.preferences = prefs config.suppressesIncrementalRendering = false self.init(frame: CGRectZero, configuration: config) } convenience requinetworking init(url: NSURL) { self.init(config: nil) loadRequest(NSURLRequest(URL: url)) } } 

Intenta sacar las decoraciones adicionales:

 import WebKit class TSWebView : WKWebView { let s: String let i: Int init(s: String, i: Int) { self.s = s self.i = i super.init(frame: CGRectZero, configuration: WKWebViewConfiguration()) } convenience init!(coder: NSCoder!) { super.init(coder:coder) } } 

Aunque supongo que el punto total de "availablity (*, unavailable)" es hacer que no pueda invocar el inicializador (y, por lo tanto, no puede subclass efectivamente WKWebView.