17116

UiWebView delegate methods not getting called

Question:

I am trying to play youtube embedded video in webView it plays when i don't set delegate and If i set delegate video dosen't load and delegates methods are also not getting called. Here is MY Code:

.m class

#import "EmbeddedVideoVC.h" @interface EmbeddedVideoVC (){ MBProgressHUD *hud; } //@property (weak, nonatomic) IBOutlet UIWebView *webView; @property (weak, nonatomic) IBOutlet UIView *viewSelf; @property (strong, nonatomic) NSTimer *controllersTimer; @property (assign, nonatomic) NSInteger controllersTimeoutPeriod; @end @implementation EmbeddedVideoVC - (void)viewDidLoad { [super viewDidLoad]; self.view.transform = CGAffineTransformMakeRotation(M_PI/2); } -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; CGRect bounds = [[UIScreen mainScreen] bounds]; if ([SharedAppManager sharedInstance].applicationFrame.size.height < 568) { bounds = CGRectMake(0, 0, 480, 320); } _videoWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0,bounds.size.height, bounds.size.width)]; [_videoWebView setAllowsInlineMediaPlayback:YES]; [_videoWebView setMediaPlaybackRequiresUserAction:NO]; [self.viewSelf addSubview:_videoWebView]; hud = [MBProgressHUD showHUDAddedTo:_videoWebView animated:YES]; hud.color = [UIColor clearColor]; hud.activityIndicatorColor = [UIColor whiteColor]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapMethod)]; [tap setNumberOfTapsRequired:1]; // Set your own number here [tap setDelegate:self]; // Add the <UIGestureRecognizerDelegate> protocol [_videoWebView addGestureRecognizer:tap]; _videoWebView.delegate= self; [_videoWebView loadHTMLString:self.embeddedCode baseURL:nil]; [self hideControllers]; } -(void)didTapMethod{ //Showing Controls } #pragma mark - WEBVIEW DELEGATES - (void)webViewDidStartLoad:(UIWebView *)webView{ [MBProgressHUD hideHUDForView:self.videoWebView animated:YES]; } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { [MBProgressHUD hideHUDForView:self.videoWebView animated:YES]; } -(void)webViewDidFinishLoad:(UIWebView *)webView { [MBProgressHUD hideHUDForView:self.videoWebView animated:YES]; } - (BOOL)prefersStatusBarHidden { return YES; } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; } -(void)hideControllers { [UIView animateWithDuration:0.5f animations:^{ dispatch_async(dispatch_get_main_queue(), ^{ topView.hidden= YES; }); } completion:^(BOOL finished){ }]; } -(void) showControles { } @end

.h class

#import "MusicParentVC.h" @interface EmbeddedVideoVC : MusicParentVC <UIGestureRecognizerDelegate, UIWebViewDelegate> @property (strong, nonatomic) NSString *embeddedCode; @property (nonatomic, strong) UIWebView *videoWebView; @end

CAN ANYONE tell me what is the problem and why webViewDidFinishLoad: and others delegates methods not getting called and even embedded code not loading in webview?

Answer1:

Just put your UIWebView related code in viewDidAppear: method.

Reference : <a href="https://stackoverflow.com/a/27647327/2284065" rel="nofollow">https://stackoverflow.com/a/27647327/2284065</a>

Answer2:

1) Please make sure you are adding web view on present class view or on any top view.

2) Are you adding viewSelf in storyboard? since i cannot see it programmatically. Make sure of it, because you are adding web view to viewSelf.

3) In hideControllers you are hiding some topView. Make sure it is not the present class topView.

Here is the code working for me (delegate methods are also calling),

_videoWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0,self.view.frame.size.width, self.view.frame.size.height)]; [_videoWebView setAllowsInlineMediaPlayback:YES]; [_videoWebView setMediaPlaybackRequiresUserAction:NO]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapMethod)]; [tap setNumberOfTapsRequired:1]; // Set your own number here [tap setDelegate:self]; // Add the <UIGestureRecognizerDelegate> protocol [_videoWebView addGestureRecognizer:tap]; _videoWebView.delegate= self; NSURL *nsurl=[NSURL URLWithString:@"http://www.google.com"]; NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl]; [_videoWebView loadRequest:nsrequest]; [self.view addSubview:_videoWebView];

Hope this helps.

Recommend

  • Animate the height of inputAccessoryView Swift
  • background device music gets stopped as app starts ios
  • Leaking NSAutoreleasePool
  • iOS sharing data between viewcontrollers
  • How do I observe a signal and immediately receive a `next` event if it has already occured?
  • NSFetchedResultsController doesn't always call didChangeObject:atIndexPath:forChangeType:newInd
  • Updating app on device with .xib removed crashes app
  • How to load image asynchronously using UIImageView+AFNetworking in ios
  • Determine if UTF-8 encoded NSData contains a null-terminated string
  • iOS :Call a method in specific time
  • MKOverlayView performance
  • How can I figure out what UITableViewCell I'm clicking on during a search?
  • windowScriptObject method not found on Objective-C code
  • SpriteKit SKScene add AVCaptureVideoPreviewLayer CALayer as background not working
  • iOS Date formatting
  • x-axis labels in coreplot not displayed
  • How to make the tableview response pan gesture in ZUUIRevealController
  • iOS - MKOverlayView custom view rect fills works, but line draws do not
  • UIScrollView setContentOffset: animated: not working
  • How do I add a UIAlertController in app delegate (obj-c)
  • GKLeaderboardViewController initial leaderboard
  • Add Labeltext on Mkannotation image
  • iOS 6 dateFromString returns wrong date
  • “A GKScore must specify a leaderboard.”
  • Question about instantiating object
  • Can't delete or rename original file after resizing
  • D3 get axis values on zoom event
  • NSScanner Loop Question
  • Time complexity of a program which involves multiple variables
  • OpenGL 3.3 on Mac OSX El Capitan with LWJGL
  • Atlas images wrong size on iPad iOS 9
  • Change multiple background-images with jQuery
  • Android screen density dpi vs ppi
  • Possible to stop flickering java tooltip in heavyweight mode?
  • How to set/get protobuf's extension field in Go?
  • DirectX11 ClearRenderTargetViewback with transparent buffer?
  • Change an a tag attribute in JavaScript based on screen width
  • How to show dropdown in excel using jrxml (jasper api)?
  • Eraser for UIBezierPath
  • Compare two NSDates in iPhone