2014-11-25 9 views
6

Ich verwende MPVolumeView, um dem Benutzer zu ermöglichen, seine bevorzugte Audio-Route zu steuern, wenn er meine Anwendung verwendet.iOS-natives MPVolumeView-Audio-Routenmenü schließen

Die Ansicht wird durch diesen Code dargestellt:

self.volumeView = [[MPVolumeView alloc] initWithFrame:self.view.frame]; 
self.volumeView.showsVolumeSlider = NO; 
[self.view addSubview:self.volumeView]; 

Wenn der Benutzer tippt die Audio-Route-Taste wird ein Menü mit den verfügbaren Optionen angezeigt.

Das Problem: Der Bildschirm, der die Lautstärke Ansicht zeigt, müssen aufgrund verschiedener Ereignisse meiner Anwendung Griffe versteckt werden, und ich möchte die Audio-Routen-Menüs zur gleichen Zeit verstecken (wenn es zur Zeit präsentiert wird)

Meine Frage: Weiß jemand, ob es möglich ist, MPVolumeViews Audio-Route-Auswahlmenü manuell zu schließen, ohne dass der Benutzer die Cancel-Taste drücken muss?

Danke!

+2

hey hast du Antwort bekam, actully i in gleiche Problem bin. –

Antwort

0

auf iOS 8 können Sie unter Code verwenden, die

private API verwenden
  NSArray *windows = [[UIApplication sharedApplication] windows]; 
    for (UIWindow *window in windows) { 
     if ([NSStringFromClass([window class]) isEqualToString:@"_MPAVRoutingSheetSecureWindow"]) { 
      UIView *view = [window.subviews firstObject]; 
      if ([NSStringFromClass([view class]) isEqualToString:@"MPAVRoutingSheet"]) { 
       [view performSelector:@selector(dismiss)]; 
      } 
     } 
    } 
+1

Obwohl es das Problem löst, ist es in der Regel keine gute Praxis, die Verwendung von privaten APIs zu empfehlen ... – Michal