How can I display an AirPlay popup menu in my Swift project? (Many applications like Spotify can display one like below):
Here's a sweet little workaround to having to use the MPVolumeView's button.
[[UIApplication sharedApplication] sendAction:NSSelectorFromString(@"_displayAudioRoutePicker") to:myVolumeView from:myView forEvent:nil];
Optional 3: On iPad you'll need to pass a UIEvent otherwise the popover will just be entered at the top of the screen and it'll look wonky. Capture the event from - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
and pass it into our call.
After all it seems there is no easy and straightforward way to make a custom button display the system's Airplay menu.
However, @totiG pointer me to an interesting resource and I created a script that creates the standard Volume Control outside of the visible area of the screen a simulates a click on the Airplay button:
func showAirplay() {
let rect = CGRect(x: -100, y: 0, width: 0, height: 0)
let airplayVolume = MPVolumeView(frame: rect)
airplayVolume.showsVolumeSlider = false
self.view.addSubview(airplayVolume)
for view: UIView in airplayVolume.subviews {
if let button = view as? UIButton {
button.sendActions(for: .touchUpInside)
break
}
}
airplayVolume.removeFromSuperview()
}
After running this code the following popup menu appears: