WKWebsiteDataStore *dateStore = [WKWebsiteDataStore defaultDataStore];
[dateStore fetchDataRecordsOfTypes:[WKWebsiteDataStore allWebsiteDataTypes]
completionHandler:^(NSArray<WKWebsiteDataRecord *> * __nonnull records) {
for (WKWebsiteDataRecord *record in records)
{
[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:record.dataTypes forDataRecords:@[record]
completionHandler:^{
NSLog(@"Cookies for %@ deleted successfully",record.displayName);
}];
}
}];
Wednesday, 14 June 2017
clear cookies in wkwebview
Tuesday, 13 June 2017
WKWebView open external links
if u want to open in same window
or if u want to open in popup. create new wkwebview and add to parent view.
- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures { if (!navigationAction.targetFrame.isMainFrame) { [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; [self.webView loadRequest:navigationAction.request]; } return nil;}or if u want to open in popup. create new wkwebview and add to parent view.
-(WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures{
self.popWindow =[[WKWebView alloc] initWithFrame:CGRectMake(25, 25, self.view.frame.size.height - 6, self.view.frame.size.width -94) configuration:configuration];
_popWindow.navigationDelegate = self;
_popWindow.UIDelegate = self;
[wkWebView addSubview:_popUpView];
[wkWebView addSubview:_popUpView];
return _popWindow;
}
Monday, 5 June 2017
Processing of JavaScript (Alert, Confirm, Prompt) in WKWebView
WKWebView by yourself
WKUIDelegatenot displayed on the screen, such as the following as long as they do not write the code by specifying, ignores the request from the JavaScript.
I wrote the code for the purpose that you use only the following WKUIDelegate.
If the iOS8 when you create a new in Xcode
Single View Applicationto create a template, ViewController.mplease try because it moves by simply copy and paste to.// // ViewController.m // MyWKWebView // // Created by vishnu on 6/6/17. // Copyright (c) 2017 vishnu. All rights reserved. //
#import "ViewController.h" #import <WebKit/WebKit.h> @interface ViewController () <WKUIDelegate> @property (nonatomic, strong) WKWebView *webView; @property (nonatomic, strong) UIToolbar *toolbar; @property (nonatomic, strong) UIBarButtonItem *buttonForAlert; @property (nonatomic, strong) UIBarButtonItem *buttonForConfirm; @property (nonatomic, strong) UIBarButtonItem *buttonForPrompt; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; /* * Setup WKWebView only for WKUIDelegate */ WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init]; _webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration]; _webView.UIDelegate = self; NSString *urlString = @"https://www.google.com"; NSURL *url = [NSURL URLWithString:urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [_webView loadRequest:request]; /* * Setup Toolbar */ _buttonForAlert = [[UIBarButtonItem alloc] initWithTitle:@"Alert" style:UIBarButtonItemStylePlain target:self action:@selector(showAlert:)]; _buttonForConfirm = [[UIBarButtonItem alloc] initWithTitle:@"Confirm" style:UIBarButtonItemStylePlain target:self action:@selector(showConfirm:)]; _buttonForPrompt = [[UIBarButtonItem alloc] initWithTitle:@"Prompt" style:UIBarButtonItemStylePlain target:self action:@selector(showPrompt:)]; _buttonForAlert.width = 80.0; _buttonForConfirm.width = 80.0; _buttonForPrompt.width = 80.0; _toolbar = [[UIToolbar alloc] initWithFrame:CGRectZero]; UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; _toolbar.items = @[_buttonForAlert, spacer, _buttonForConfirm, spacer, _buttonForPrompt]; [self.view addSubview:_webView]; [self.view addSubview:_toolbar]; [self setupConstraints]; } - ( Void ) ShowAlert: ( UIBarButtonItem * ) Sender { NSString * PromptCode = Atto "Alert ( 'Alert was pressed');" ; [ _WebView EvaluateJavaScript : PromptCode completionHandler : ^ ( Id Object , NSError * Error ) { } ]; } - (void)showConfirm:(UIBarButtonItem *)sender { NSString *promptCode = @"var confirmed = confirm('OK?');"; [_webView evaluateJavaScript:promptCode completionHandler:^(id object, NSError *error) { }]; } - ( Void ) ShowPrompt: ( UIBarButtonItem * ) Sender { NSString * PromptCode = Atto "Var Person = Prompt ( 'Please enter a name', 'default');" ; [ _WebView EvaluateJavaScript : PromptCode completionHandler : ^ ( Id Object , NSError * error ) { }]; } #pragma mark - WKUIDelegate - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)())completionHandler { NSString *hostString = webView.URL.host; NSString *sender = [NSString stringWithFormat:@"%@", hostString]; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message message:sender preferredStyle:UIAlertControllerStyleAlert]; [alertController addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { completionHandler(); }]]; [self presentViewController:alertController animated:YES completion:^{}]; } - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString *))completionHandler { NSString *hostString = webView.URL.host; NSString *sender = [NSString stringWithFormat:@"%@", hostString]; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:prompt message:sender preferredStyle:UIAlertControllerStyleAlert]; [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { //textField.placeholder = defaultText; textField.text = defaultText; }]; [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { NSString *input = ((UITextField *)alertController.textFields.firstObject).text; completionHandler(input); }]]; [alertController addAction:[UIAlertAction actionWithTitle:@"cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { completionHandler(nil); }]]; [self presentViewController:alertController animated:YES completion:^{}]; } - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL))completionHandler { NSString *hostString = webView.URL.host; NSString *sender = [NSString stringWithFormat:@"%@", hostString]; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message message:sender preferredStyle:UIAlertControllerStyleAlert]; [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { completionHandler(YES); }]]; [alertController addAction:[UIAlertAction actionWithTitle:@"cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { completionHandler(NO); }]]; [self presentViewController:alertController animated:YES completion:^{}]; } #pragma mark - Constraints - (void)setupConstraints { _webView.translatesAutoresizingMaskIntoConstraints = NO; [_webView.superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20.0-[view]-44.0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:@{@"view":_webView}]]; [_webView.superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[view]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:@{@"view":_webView}]]; _toolbar.translatesAutoresizingMaskIntoConstraints = NO; [_toolbar.superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:@{@"view":_toolbar}]]; [_toolbar.superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[view]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:@{@"view":_toolbar}]]; [_toolbar.superview addConstraint:[NSLayoutConstraint constraintWithItem:_toolbar attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:1.0 constant:44.0]]; } @end
Subscribe to:
Comments (Atom)
Setting Up Multiple App Targets in Xcode from a Single Codebase
To create two different apps (like "Light" and "Regular") from the same codebase in Xcode, you can follow these steps b...
-
if u want to open in same window - ( WKWebView *) webView :( WKWebView *) webView createWebViewWithConfiguration :( WKWebViewConfigurat...
-
To create two different apps (like "Light" and "Regular") from the same codebase in Xcode, you can follow these steps b...
-
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"prefs:root=General&path=Network"]]; List of curre...