在Objective-C中,我订阅了
UIWindowDidBecomeVisibleNotification
要知道某个视图是否超出了我当前的视图控制器,请使用:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoStartedPlaying:)
name:UIWindowDidBecomeVisibleNotification
object:nil];
到目前为止,一切都很好。然后,在通知中,我可以检查对象是否
不
某些类别(如
_UIAlertControllerShimPresenterWindow
-警报视图-或
UITextEffectsWindow
-本机共享视图-)。在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
(用于呈现新闻)。我曾尝试在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'
。同样的事情发生在
UITextEffects窗口
.
我想我必须导入
某物
检测这些类,但我应该导入什么?
在不桥接Objective-C的情况下,还有其他方法吗?我如何才能访问该类?
提前谢谢你。