UIWebView and WKWebView

I want to use WKWebView for IOS8, but I also need compatibility for IOS7, I saw posts citing the use of this code:

if ([WKWebView class]) { // do new webview stuff } else { // do old webview stuff } 

But not sure what I'm doing wrong, as the code below gives me a linker error:

 Undefined symbols for architecture i386: "_OBJC_CLASS_$_WKWebView", referenced from: objc-class-ref in ViewController.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Any help is much appreciated, here is my code:

.h file:

 #import "WebKit/WebKit.h" #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIWebView *contentWebView; @property (weak, nonatomic) IBOutlet WKWebView *contentWKWebView; @end 

.m file:

 #import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize contentWebView; @synthesize contentWKWebView; - (void)viewDidLoad { [super viewDidLoad]; NSString *filePath = [[NSBundle mainBundle]pathForResource:@"LockBackground" ofType:@"html"]; NSURL * fileURL = [NSURL fileURLWithPath:filePath isDirectory:NO]; NSURLRequest * myNSURLRequest = [[NSURLRequest alloc]initWithURL:fileURL]; if ([WKWebView class]) { [contentWKWebView loadRequest:myNSURLRequest]; } else { [contentWebView loadRequest:myNSURLRequest]; } } -(UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 
+6
source share
1 answer

Go to Project , click General , scroll down to Linked Frameworks and Libraries and add WebKit.framework as optional. See here: Xcode 6 + iOS 8 SDK, but deploy it to iOS 7 (UIWebKit and WKWebKit)

+43
source

Source: https://habr.com/ru/post/980066/


All Articles