1

iOS4.0以降とAndroid2.3以降を対象としたAdobeAIRでアプリを作成しています。埋め込まれたYTビデオのiOSエラスティックスクロールを無効にしようとしました。ユーザーがプレーヤーのIFrameを押すと、ビデオ全体がパンし、これを回避する方法が見つからないようです。

この動作を防ぐためにイベントリスナーを追加しようとしましたが、機能しません。

ちなみに、IFrameで何が起こるかを実際に制御することはできないことを認識しています。迅速で汚い解決策は、イベントをキャッチする透明なキャンバスやdivのように、要素をフレームの真上に配置することです。ユーザーはプレーヤーのボタンを押すことができないため、まったく理想的ではありません。

何かアイデアや提案はありますか?

ありがとう!

4

1 に答える 1

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;
  }
}

お役に立てれば!

于 2012-09-06T16:00:07.643 に答える