UIWebView和Swift:检测video何时开始播放

在Objective-C中,我订阅了UIWindowDidBecomeVisibleNotification来知道某些视图是否超出了我当前的视图控制器,使用:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoStartedPlaying:) name:UIWindowDidBecomeVisibleNotification object:nil]; 

到现在为止还挺好。 然后,在通知中,我可以检查对象是否不是某些类(如_UIAlertControllerShimPresenterWindow -alert views-或UITextEffectsWindow sharing view-)。 在Objective-C中,我这样做了:

 - (void)videoStartedPlaying:(NSNotification *)notification { if ( <radio_is_playing> && ! [notification.object isKindOfClass:NSClassFromString(@"_UIAlertControllerShimPresenterWindow")] // Alert view && ! [notification.object isKindOfClass:NSClassFromString(@"UITextEffectsWindow") ] // Share ) { // Video, stop the radio stream } } 

这允许我从UIWebView (用于呈现新闻)开始video时停止播放声音(在这种情况下,HTTP广播stream)。 我试图在Swift中做同样的事情,所以我订阅了通知:

 NSNotificationCenter.defaultCenter().addObserver(self, selector: "videoStartedPlaying:", name: UIWindowDidBecomeVisibleNotification, object: nil) 

而现在,当收到通知…

 func videoStartedPlaying(notification: NSNotification) { if <radio_is_playing> && !notification.object? is _UIAlertControllerShimPresenterWindow && !notification.object? is UITextEffectsWindow { // Stop the radio stream } } 

Xcode说Use of undeclared type '_UIAlertControllerShimPresenterWindow'UITextEffectsWindow发生同样的情况。

我假设我必须导入一些东西来检测这些类,但是我应该导入什么?

有没有其他的方式来做到这一点,而不是桥接Objective-C? 我怎样才能进入这个class级?

先谢谢你。

你可以比较类名而不是类本身,请参阅这里获取类名。