在嵌入式YT IFrame上禁用iOS Elastic Sc​​rolling

时间:2012-08-03 18:41:19

标签: ios iframe air youtube stagewebview

我正在使用针对iOS 4.0+和Android 2.3+的Adobe AIR制作应用。我试图为嵌入式YT视频禁用iOS弹性滚动:当用户按下播放器的IFrame时,整个视频都会翻转,我似乎无法找到解决方法。

我已尝试添加事件侦听器以防止此行为,但它不起作用。

顺便说一句,我知道我无法控制IFrame中发生的事情。一个快速而肮脏的解决方案是将元素直接放在框架上,如透明画布或可以捕捉事件的div。根本不理想,因为用户将无法按下播放器上的按钮。

有任何想法或建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

您需要访问UIWebView(StageWebView下的底层iOS实现)才能禁用弹性滚动。

一旦安装了Adobe Native Extension(ANE),它就相对简单了。 (这里有一个很棒的ANE向导/生成器https://github.com/freshplanet/ANE-Wizard

对于iOS 5,它很简单:webView.scrollView.bounces = NO;

如果你想支持iOS 4,它会变得有点复杂。您没有webView.scrollView的便利,因此您需要手动查找此视图。

处理iOS 4和5的Objective-C代码块将是这样的:

NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:@"5.0" options:NSNumericSearch] != NSOrderedAscending) {
    // iOS 5 is straightforward
    webView.scrollView.bounces = NO;
} 
else {
  // iOS 4 requires a bit more of work
  UIScrollView *scrollView = nil;
  for (UIView *subview in [webView subviews]) 
  {
    if ([subview isKindOfClass:[UIScrollView class]]) {
      scrollView = (UIScrollView *)subview;
    }
  } 
  if (scrollView != nil) {
    scrollView.bounces = NO;
  }
}

希望这有帮助!