Code Bye

IOS uiwebView 视频播放问题

 

最近要实现个功能:点击uiwebview 视频播放按钮时,屏幕横屏播放。

本人将这个部分拆成了两部分进行:
1. 通过js 监听uiwebview中的视频播放按钮
2.研究如何点击按钮后横屏。

(如果有更好的思路可以提出)

现在遇到的问题是:第二步如何有效的实现横屏,不考虑用私有的api.大家有啥好的方法可以说出来。


100分
横竖屏切换用这个就行了:
[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIInterfaceOrientationLandscapeRight] forKey:@"orientation"];
[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIInterfaceOrientationPortrait] forKey:@"orientation"];

上架多个视频类产品,实践出真知

引用 楼主 a_c_e 的回复:

最近要实现个功能:点击uiwebview 视频播放按钮时,屏幕横屏播放。

本人将这个部分拆成了两部分进行:
1. 通过js 监听uiwebview中的视频播放按钮
2.研究如何点击按钮后横屏。

(如果有更好的思路可以提出)

现在遇到的问题是:第二步如何有效的实现横屏,不考虑用私有的api.大家有啥好的方法可以说出来。

能不能加个联系方式

我写了一个demo,你实际上是要去抓button的click事件,你可以用这种方式
<html>
	<head>
		<title>Test</title>
		<script type="text/javascript">
			window.onload = function onload () {
				var button = document.getElementById("button1");
				button.addEventListener("click", function () {
					alert("111");
				});
			}
		</script>
	</head>
	<body>
		<button id="button1">确定</button>
	</body>
</html>
引用 3 楼 zhangao0086 的回复:

我写了一个demo,你实际上是要去抓button的click事件,你可以用这种方式

<html>
	<head>
		<title>Test</title>
		<script type="text/javascript">
			window.onload = function onload () {
				var button = document.getElementById("button1");
				button.addEventListener("click", function () {
					alert("111");
				});
			}
		</script>
	</head>
	<body>
		<button id="button1">确定</button>
	</body>
</html>

我已经做出来了,我发现真机调试的时候,你提供的函数不是强制横屏。因为我真机调试的时候,将屏幕旋转那个按钮锁为只支持竖屏的时候,你提供的那个函数就不起作用了,但是其它软件还是可以横屏的

引用 4 楼 a_c_e 的回复:
Quote: 引用 3 楼 zhangao0086 的回复:

我写了一个demo,你实际上是要去抓button的click事件,你可以用这种方式

<html>
	<head>
		<title>Test</title>
		<script type="text/javascript">
			window.onload = function onload () {
				var button = document.getElementById("button1");
				button.addEventListener("click", function () {
					alert("111");
				});
			}
		</script>
	</head>
	<body>
		<button id="button1">确定</button>
	</body>
</html>

我已经做出来了,我发现真机调试的时候,你提供的函数不是强制横屏。因为我真机调试的时候,将屏幕旋转那个按钮锁为只支持竖屏的时候,你提供的那个函数就不起作用了,但是其它软件还是可以横屏的

我那个方法屏幕锁定情况下仍然有效,你检查下工程设置,以及VC和它所有的父VC的shouldAutorotate、supportedInterfaceOrientations、preferredInterfaceOrientationForPresentation这几个方法,确保VC的父VC不会截获掉,针对NavController,我一般是这么处理:

@implementation UINavigationController (Rotation)

- (BOOL)shouldAutorotate {
    return [[self.viewControllers lastObject] shouldAutorotate];
}

- (NSUInteger)supportedInterfaceOrientations {
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

@end
引用 5 楼 zhangao0086 的回复:
Quote: 引用 4 楼 a_c_e 的回复:
Quote: 引用 3 楼 zhangao0086 的回复:

我写了一个demo,你实际上是要去抓button的click事件,你可以用这种方式

<html>
	<head>
		<title>Test</title>
		<script type="text/javascript">
			window.onload = function onload () {
				var button = document.getElementById("button1");
				button.addEventListener("click", function () {
					alert("111");
				});
			}
		</script>
	</head>
	<body>
		<button id="button1">确定</button>
	</body>
</html>

我已经做出来了,我发现真机调试的时候,你提供的函数不是强制横屏。因为我真机调试的时候,将屏幕旋转那个按钮锁为只支持竖屏的时候,你提供的那个函数就不起作用了,但是其它软件还是可以横屏的

我那个方法屏幕锁定情况下仍然有效,你检查下工程设置,以及VC和它所有的父VC的shouldAutorotate、supportedInterfaceOrientations、preferredInterfaceOrientationForPresentation这几个方法,确保VC的父VC不会截获掉,针对NavController,我一般是这么处理:

@implementation UINavigationController (Rotation)

- (BOOL)shouldAutorotate {
    return [[self.viewControllers lastObject] shouldAutorotate];
}

- (NSUInteger)supportedInterfaceOrientations {
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

@end

横屏没有问题了,但是我想当退出视频时,变回竖屏,我发现html5上没有一个退出视频的事件,就只有pause,而且当你横屏全屏播放时,选择左上角的done,或者是正常的暂停,还有屏幕缩小的按钮,都会响应pause。请请问一下,webview加载的视频,不是调用html5中的video播放的吗?还是调用ios原生的播放器进行播放?左上角的done 按钮是属于ios上得按钮还是html5中的

参考这个帖子,希望对你有帮助 
http://www.cocoachina.com/bbs/read.php?tid-39663.html
引用 6 楼 a_c_e 的回复:
Quote: 引用 5 楼 zhangao0086 的回复:
Quote: 引用 4 楼 a_c_e 的回复:
Quote: 引用 3 楼 zhangao0086 的回复:

我写了一个demo,你实际上是要去抓button的click事件,你可以用这种方式

<html>
	<head>
		<title>Test</title>
		<script type="text/javascript">
			window.onload = function onload () {
				var button = document.getElementById("button1");
				button.addEventListener("click", function () {
					alert("111");
				});
			}
		</script>
	</head>
	<body>
		<button id="button1">确定</button>
	</body>
</html>

我已经做出来了,我发现真机调试的时候,你提供的函数不是强制横屏。因为我真机调试的时候,将屏幕旋转那个按钮锁为只支持竖屏的时候,你提供的那个函数就不起作用了,但是其它软件还是可以横屏的

我那个方法屏幕锁定情况下仍然有效,你检查下工程设置,以及VC和它所有的父VC的shouldAutorotate、supportedInterfaceOrientations、preferredInterfaceOrientationForPresentation这几个方法,确保VC的父VC不会截获掉,针对NavController,我一般是这么处理:

@implementation UINavigationController (Rotation)

- (BOOL)shouldAutorotate {
    return [[self.viewControllers lastObject] shouldAutorotate];
}

- (NSUInteger)supportedInterfaceOrientations {
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

@end

横屏没有问题了,但是我想当退出视频时,变回竖屏,我发现html5上没有一个退出视频的事件,就只有pause,而且当你横屏全屏播放时,选择左上角的done,或者是正常的暂停,还有屏幕缩小的按钮,都会响应pause。请请问一下,webview加载的视频,不是调用html5中的video播放的吗?还是调用ios原生的播放器进行播放?左上角的done 按钮是属于ios上得按钮还是html5中的

 一般都是调用iOS原生的播放器


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明IOS uiwebView 视频播放问题