Iphone 当Youtube播放器在UIWebView中单击时,iPad应用程序崩溃

Iphone 当Youtube播放器在UIWebView中单击时,iPad应用程序崩溃,iphone,uiwebview,youtube,Iphone,Uiwebview,Youtube,我有一个iPhone/iPad应用程序(通用二进制),带有一个常规的UIWebView,可以在互联网上显示网页。当用户按下Youtube嵌入时,iPhone应用程序会正常运行——打开视频播放器,当你关闭它时,它会返回应用程序。然而,在iPad上,它崩溃了 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIWindow addEventMonitor:]: unrecog

我有一个iPhone/iPad应用程序(通用二进制),带有一个常规的UIWebView,可以在互联网上显示网页。当用户按下Youtube嵌入时,iPhone应用程序会正常运行——打开视频播放器,当你关闭它时,它会返回应用程序。然而,在iPad上,它崩溃了

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIWindow addEventMonitor:]: unrecognized selector sent to instance 0x1219c0'

#0  0x30c8e0a0 in __kill ()
#1  0x30c8e096 in kill ()
#2  0x30c8e088 in raise ()
#3  0x30ca2210 in abort ()
#4  0x32944a22 in __gnu_cxx::__verbose_terminate_handler ()
#5  0x335657ca in _objc_terminate ()
#6  0x32942df4 in __cxxabiv1::__terminate ()
#7  0x32942e48 in std::terminate ()
#8  0x32942f18 in __cxa_throw ()
#9  0x335646aa in objc_exception_throw ()
#10 0x32c9517a in -[NSObject doesNotRecognizeSelector:] ()
#11 0x32c94b00 in ___forwarding___ ()
#12 0x32c316d0 in __forwarding_prep_0___ ()
#13 0x32810492 in -[MPInactivityMonitor initForWindow:inactivityDuration:delegate:] ()
#14 0x32831dfe in -[MPFullScreenVideoViewController _createInactivityMonitor] ()
#15 0x328324bc in -[MPFullScreenVideoViewController showOverlayAnimated:] ()
#16 0x32833612 in -[MPAbstractFullScreenVideoViewController setControlsOverlayVisible:animate:] ()
#17 0x3281fca4 in -[UIMoviePlayerController setControlsOverlayVisible:disableAutohide:animate:] ()
#18 0x330bb444 in -[YTMovieView _switchToVideo:] ()
#19 0x330bb028 in -[YTMovieView willShowForVideo:inList:orVideoID:] ()
#20 0x04b8d142 in dyld_stub_time ()
#21 0x04b8b82e in dyld_stub_time ()
#22 0x32c2616c in -[NSObject performSelector:withObject:withObject:] ()
#23 0x3152716c in -[UIApplication sendAction:to:from:forEvent:] ()
#24 0x3152710c in -[UIApplication sendAction:toTarget:fromSender:forEvent:] ()
#25 0x315270de in -[UIControl sendAction:to:forEvent:] ()
#26 0x31526e30 in -[UIControl(Internal) _sendActionsForEvents:withEvent:] ()
#27 0x3152747e in -[UIControl touchesEnded:withEvent:] ()
#28 0x31525e54 in -[UIWindow _sendTouchesForEvent:] ()
#29 0x3152579c in -[UIWindow sendEvent:] ()
#30 0x315213be in -[UIApplication sendEvent:] ()
#31 0x31520d2a in _UIApplicationHandleEvent ()
#32 0x30d62b32 in PurpleEventCallback ()
#33 0x32c23d9c in CFRunLoopRunSpecific ()
#34 0x32c234e0 in CFRunLoopRunInMode ()
#35 0x30d620da in GSEventRunModal ()
#36 0x30d62186 in GSEventRun ()
#37 0x314d54c8 in -[UIApplication _run] ()
#38 0x314d39f2 in UIApplicationMain ()
(我甚至没有在堆栈跟踪中看到我的应用程序(顶层main.m除外)


在iPad Mobile Safari中,在同一个网页上,视频将在网页上播放。我需要做些什么才能启用它?或者我忘记启用了什么吗?

据我所知,这个问题只出现在通用二进制文件上,它是在iPhone OS 3.1.3或更低版本下编译的。不仅是youtube视频,也适用于所有类型的f加载到UIWebView的媒体文件。 作为解决方案,您可以重写UIWindow并添加一些伪方法

@interface MyWindow : UIWindow {
}
@end

@implementation MyWindow {
- (void)addEventMonitor:(void *)monitor {}
- (void)pendingMouseUpCount {}
}

我在这里是在黑暗中拍摄的,所以请容忍我。你尝试过包括MediaPlayer.Framework吗?你真的不应该这样做,但它似乎在那里被打破了。还要确保iPad上的操作系统版本是最新的(尽管我认为他们在iPad第一次生产发布后没有发布任何更新)我尝试过使用和不使用mediaplayer框架——没有区别。我用同样的方法创建了另一个“hello world”应用程序(iphone应用程序,升级到ipad)youtube视频工作正常。所以我已经手动移植了代码:-P仍然不确定旧应用程序被什么损坏了我该怎么做?在我的视图控制器中?调用[window makeKeyAndVisible]时,应该使用MyWindow类的对象,这在回答中有描述进入你的appDelegate。无法编辑你的答案。根据你在这里提出的建议,我用它来代替。但是,我在最后一个应用中没有使用它。我手动重新创建了该应用(仍然是iphone应用>升级到ipad),它在没有这种黑客攻击的情况下“正常工作”。所以我不完全确定是什么损坏了旧项目。