如何在用户不触摸 UIWebView 本身的情况下启动 YouTube 视频?

Posted

技术标签:

【中文标题】如何在用户不触摸 UIWebView 本身的情况下启动 YouTube 视频?【英文标题】:How can I start a YouTube video without the user touching the UIWebView itself? 【发布时间】:2011-07-27 11:53:16 【问题描述】:

我们正在开发一个应用,其中包含一个带有一些标准单元格的 TableView,以及一个 YouTube 视频列表。我们知道如何将 YouTube 视频数据嵌入 UIWebView 并在用户触摸时播放。但为了做到这一点,用户必须触摸 UIWebView。

因为它是一个 TableView,所以每个单元格都是典型的单元格,左侧是缩略图,右侧是一些信息和一个辅助按钮。我们想让用户触摸单元格中的任何位置,而不仅仅是 WebView (didSelectRow),以便视频开始播放。

我们怎样才能做到这一点?

    我们曾考虑在 didSelectRow 中启用 WebView,嵌入 html 数据并全屏显示,但这样用户需要再次触摸播放按钮才能播放视频,对吗? 是否可以改用 MPMoviePlayerController,将视频的 flv 路径设置为请求 URL? (任何 api 建议?) 最后一个是模拟 WebView 内的触摸,因此它会启动视频,即使用户没有触摸 UIWebView。有可能吗? 还有其他建议吗?

【问题讨论】:

【参考方案1】:

回答我自己。我找到了解决方案。此代码将自动播放 webview。

 - (UIButton *)findButtonInView:(UIView *)view 
  UIButton *button = nil;

  if ([view isMemberOfClass:[UIButton class]]) 
    return (UIButton *)view;
  

  if (view.subviews && [view.subviews count] > 0) 
    for (UIView *subview in view.subviews) 
      button = [self findButtonInView:subview];
      if (button) return button;
    
  

  return button;


- (void)webViewDidFinishLoad:(UIWebView *)_webView 
  UIButton *b = [self findButtonInView:_webView];
  [b sendActionsForControlEvents:UIControlEventTouchUpInside];

Youtube video autoplay on iPhone's Safari or UIWebView

希望它对其他人有所帮助。

【讨论】:

应该的。只要记住委派 webview 以便调用 webViewDidFinishLoad。

以上是关于如何在用户不触摸 UIWebView 本身的情况下启动 YouTube 视频?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中禁用 uiwebview 上的某些触摸事件

将触摸事件从覆盖 UIView 转发到 UIWebView / 如何从代码将触摸事件发送到 uiwebview

在 iphone 上模拟触摸

如何控制 UIWebView 上的触摸? (苹果手机)

如何在uiwebview中实现触摸事件?

如何在 iPad 中实现不使用 UIWebView 的 PDF 阅读器