我正在尝试在webView中播放youtube嵌入式视频,当我没有设置委托时播放它。如果我设置了委托视频,那么加载和委托方法也没有被调用。这是我的代码:
.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告诉我是什么问题以及为什么webViewDidFinishLoad:和其他人委托方法没有被调用,甚至嵌入代码没有加载到webview中?
答案 0 :(得分:0)
只需将UIWebView
相关代码放入viewDidAppear:
方法。
答案 1 :(得分:0)
1)请确保您在当前班级视图或任何顶视图上添加Web视图。
2)你是否在故事板中添加了viewSelf?因为我无法以编程方式看到它。确保它,因为您正在向viewSelf添加Web视图。
3)在hideControllers中你隐藏了一些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];
希望这有帮助。