В Objective-C, я подписался на UIWindowDidBecomeVisibleNotification
знать, если какой-то вид становится выше моего текущего контроллера представления, используя:UIWebView и Swift: Обнаружение, когда начинается воспроизведение видео
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(videoStartedPlaying:)
name:UIWindowDidBecomeVisibleNotification
object:nil];
До сих пор, так хорошо. Затем, в уведомлении, я мог проверить, является ли объект не определенных классов (например, _UIAlertControllerShimPresenterWindow
-alert views- или UITextEffectsWindow
-native 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
}
}
Это позволило мне, чтобы остановить воспроизведение звука (в этом случае HTTP-радио передачи) при запуске видео с 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'
. То же самое происходит с UITextEffectsWindow
.
Я предполагаю, что мне нужно импортировать что-то, чтобы обнаружить эти классы, но что мне импортировать?
Есть ли другой способ сделать это без соединения Objective-C? Как я могу получить доступ к этому классу?
Заранее спасибо.
Неужели в это никто не попадает? –
Я просто проверяю, является ли уведомление.objevt UIWindow, сделайте паузу – Bastet