Dzięki Xcode 8 jest to teraz możliwe, ale środki do osiągnięcia tego są co najmniej trochę hakerskie. Ale hej, działające rozwiązanie to działające rozwiązanie, prawda? Pozwól mi wyjaśnić.
WKWebView initWithCoder: nie ma już adnotacji „NS_UNAVAILABLE”. Teraz wygląda tak, jak pokazano poniżej.
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
Zacznij od podklasy WKWebView i zastąp initWithCoder. Zamiast wywoływać super initWithCoder, musisz użyć innej metody init, takiej jak initWithFrame: configuration :. Krótki przykład poniżej.
- (instancetype)initWithCoder:(NSCoder *)coder
{
// An initial frame for initialization must be set, but it will be overridden
// below by the autolayout constraints set in interface builder.
CGRect frame = [[UIScreen mainScreen] bounds];
WKWebViewConfiguration *myConfiguration = [WKWebViewConfiguration new];
// Set any configuration parameters here, e.g.
// myConfiguration.dataDetectorTypes = WKDataDetectorTypeAll;
self = [super initWithFrame:frame configuration:myConfiguration];
// Apply constraints from interface builder.
self.translatesAutoresizingMaskIntoConstraints = NO;
return self;
}
W swoim Storyboard użyj UIView i nadaj mu niestandardową klasę swojej nowej podklasy. Reszta to zwykły biznes (ustawienie ograniczeń automatycznego układu, połączenie widoku z gniazdem w kontrolerze itp.).
Wreszcie WKWebView skaluje zawartość inaczej niż UIWebView. Wiele osób prawdopodobnie będzie chciało postępować zgodnie z prostą radą w Pomijanie WKWebView ze skalowania zawartości w celu renderowania przy takim samym powiększeniu, jak robi to UIWebView, aby WKWebView dokładniej podążał za zachowaniem UIWebView w tym zakresie.