我正在尝试在 webView 中播放 youtube 嵌入视频,当我没有设置委托(delegate)时它会播放,如果我设置委托(delegate)视频不加载并且委托(delegate)方法也不会被调用。这是我的代码:
.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)viewDidAppearBOOL)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 actionselector(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)webViewDidStartLoadUIWebView *)webView{
[MBProgressHUD hideHUDForView:self.videoWebView animated:YES];
}
- (void)webViewUIWebView *)webView didFailLoadWithErrorNSError *)error
{
[MBProgressHUD hideHUDForView:self.videoWebView animated:YES];
}
-(void)webViewDidFinishLoadUIWebView *)webView {
[MBProgressHUD hideHUDForView:self.videoWebView animated:YES];
}
- (BOOL)prefersStatusBarHidden {
return YES;
}
- (BOOL)gestureRecognizerUIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizerUIGestureRecognizer *)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: 和其他委托(delegate)方法没有被调用,甚至嵌入的代码没有在 webview 中加载?
只需将你的 UIWebView
相关代码放在 viewDidAppear:
方法中即可。
引用:https://stackoverflow.com/a/27647327/2284065
关于ios - UiWebView 委托(delegate)方法没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41219916/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |