From 896415dffeff27c1063b43e85d5c38ad12fa46bf Mon Sep 17 00:00:00 2001 From: ruohoruotsi Date: Sun, 28 Jul 2013 23:42:08 -0700 Subject: [PATCH] [BUG FIX] Fix for Issue #19. Fixes crashes on iOS 5.0, where calls to NS_AVAILABLE_IOS(6_0) methods were not protected by instancesRespondToSelector checks. https://github.com/BeamApp/MusicPlayerViewController/issues/19 --- Source/BeamMusicPlayerViewController.m | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) mode change 100644 => 100755 Source/BeamMusicPlayerViewController.m diff --git a/Source/BeamMusicPlayerViewController.m b/Source/BeamMusicPlayerViewController.m old mode 100644 new mode 100755 index 89fd79c..051efab --- a/Source/BeamMusicPlayerViewController.m +++ b/Source/BeamMusicPlayerViewController.m @@ -207,10 +207,21 @@ - (void)viewDidLoad #else // Since there is a bug/glitch in iOS with setting the thumb, we need to use an image with 5pt transparency at the bottom UIImage* knobImg = [UIImage imageNamed:@"BeamMusicPlayerController.bundle/images/mpSpeakerSliderKnob.png"]; - [self.volumeView setVolumeThumbImage:knobImg forState:UIControlStateNormal]; - [self.volumeView setVolumeThumbImage:knobImg forState:UIControlStateHighlighted]; - [self.volumeView setMinimumVolumeSliderImage:minImg forState:UIControlStateNormal]; - [self.volumeView setMaximumVolumeSliderImage:maxImg forState:UIControlStateNormal]; + + if ([MPVolumeView instancesRespondToSelector: @selector (setVolumeThumbImage:forState:)]) { // iOS6 only + [self.volumeView setVolumeThumbImage:knobImg forState:UIControlStateNormal]; + [self.volumeView setVolumeThumbImage:knobImg forState:UIControlStateNormal]; + [self.volumeView setVolumeThumbImage:knobImg forState:UIControlStateHighlighted]; + } + + if ([MPVolumeView instancesRespondToSelector: @selector (setMinimumVolumeSliderImage:forState:)]) { // iOS6 only + [self.volumeView setMinimumVolumeSliderImage:minImg forState:UIControlStateNormal]; + } + + if ([MPVolumeView instancesRespondToSelector: @selector (setMaximumVolumeSliderImage:forState:)]) { // iOS6 only + [self.volumeView setMaximumVolumeSliderImage:maxImg forState:UIControlStateNormal]; + } + #endif // explicitly tint buttons