UiWebView委托方法没有被调用

问题描述:

我试图在webView中播放youtube嵌入的视频,当我不设置委托时,如果我设置委托视频不加载,委托方法也没有被调用。这里是我的代码:UiWebView委托方法没有被调用

.M类

#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类

#import "MusicParentVC.h" 

@interface EmbeddedVideoVC : MusicParentVC <UIGestureRecognizerDelegate, UIWebViewDelegate> 

@property (strong, nonatomic) NSString *embeddedCode; 
@property (nonatomic, strong) UIWebView *videoWebView; 
@end 

谁能告诉我是什么问题,为什么webViewDidFinishLoad:和其他委托方法没有得到所谓的连嵌入的代码不加载在webview中?

+0

其中是“hideControllers”方法?你可以粘贴该代码吗? –

+0

- (无效)hideControllers { [UIView的animateWithDuration:0.5F动画:^ { dispatch_async(dispatch_get_main_queue(),^ { topView.hidden = YES; }); }完成:^(BOOL完成){ }]; } –

只需将您的UIWebView相关代码写入viewDidAppear:方法即可。

参考:https://*.com/a/27647327/2284065

1)请确保您添加在本类视图或任何顶视图网络视图。

2)你是否在storyboard中添加viewSelf?因为我无法以编程方式看到它。确保它,因为你正在添加web视图来查看自己。

3)在hideControllers你隐藏了一些topView。确保它不是现在的类topView。

这里是为我工作(委托方法也被调用)的代码,

_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]; 

希望这有助于。

+0

@Intsab Haider,你的问题解决了吗? –