2010-05-22 7 views
0

인터넷에 웹 페이지를 표시하는 일반 UIWebView가있는 iPhone/iPad 앱 (유니버설 바이너리)이 있습니다. 사용자가 Youtube 퍼가기를 누르면 iPhone 앱이 정상적으로 작동하여 비디오 플레이어가 열리고 닫으면 앱으로 돌아갑니다. 그러나 아이 패드에 내가 심지어 같은에, (아이 패드 모바일 사파리에서유튜브 플레이어가 UIWebView를 클릭하면 iPad 앱이 충돌합니다.

) 최상위 main.m을 제외하고 스택 추적에서 내 응용 프로그램을 볼 수 없습니다 (

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() 

와 충돌 웹 페이지에서 비디오가 재생됩니다. 활성화 할 수있는 방법이 있습니까? 아니면 무언가를 사용하는 것을 잊었습니까?

+0

저는 여기 어둠 속에서 촬영하고 있습니다. MediaPlayer.Framework를 포함 해 보았습니까? 당신은 정말로 그렇게해서는 안되지만 거기에 침입 한 것 같습니다. 또한 iPad의 OS 버전이 최신 버전인지 확인하십시오 (iPad의 첫 번째 프로덕션 출시 이후에 업데이트가 출시 된 것은 아니지만). –

+0

mediaplayer 프레임 워크를 사용해 보았습니다. 차이는 없습니다. 나는 (아이폰 앱, ipad로 업그레이드하는) 같은 방식으로 또 다른 "hello world"앱을 만들었고 youtube 비디오는 잘 작동한다. 그래서 난 수동으로 코드를 포팅했습니다 : - P는 여전히 확실하지 않습니다 오래된 애플 리케이션을 손상 – choonkeat

답변

0

이 문제는 범용 바이너리에만 적용되며, iPhone OS 3.1.3 이하 및 YouTube 웹 동영상뿐만 아니라 UIWebView에로드 된 모든 종류의 미디어 파일에도 적용됩니다. 해결책으로 UIWindow를 재정의 (override) 해, 더미 메소드를 추가 할 수 있습니다.

@interface MyWindow : UIWindow { 
} 
@end 

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

어떻게합니까? 내보기 컨트롤러에? – choonkeat

+0

[window makeKeyAndVisible]을 appDelegate로 호출 할 때 대답에 설명되어있는 MyWindow 클래스의 객체를 사용해야합니다. – FalconSer

+0

답을 편집 할 수 없습니다. 여기에서 제안한 내용은 내가 대신 사용하도록 만든 것입니다. http://gist.github.com/427258 그러나 최종 앱에는 이것을 사용하지 않았습니다. 나는 수동으로 응용 프로그램을 다시 만들었고 (여전히 iphone 앱> ipad로 업그레이드)이 해킹없이 "그냥 작동"합니다. 그래서 저는 오래된 프로젝트를 왜 손상 시켰는지 완전히 확신하지 못했습니다. – choonkeat

관련 문제