2016-12-19 251 views
0

我試圖在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完成){ }]; } –

回答

0

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,你的問題解決了嗎? –