2016-02-04 9 views
0

Этого код отлично работает в IOS 8.0 устройств, но прошивка 9.0 всегда получает значение слайдера как 0,000 ...Как изменить громкость в iOS9?

(void) volumeUp{ 

MPVolumeView * volumeView = [[MPVolumeView alloc] init]; 

//find the volumeSlider 
UISlider* volumeViewSlider = nil; 
for (UIView *view in [volumeView subviews]){ 
    if ([view.class.description isEqualToString:@"MPVolumeSlider"]){ 
     volumeViewSlider = (UISlider*)view; // volumeViewSlider always 0.000 
     break; 
    } 
} 

[volumeViewSlider setValue: [volumeViewSlider value] + 0.0625 animated:YES]; 
[volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside]; 

} 

Как я могу это исправить? Мне нужно каждый раз увеличивать объем 0.0625.

Спасибо!

+0

ли volumeViewSlider возможно ноль после для цикла? – onnoweb

ответ

0

В коде, когда вы вызываете volumeUp, он создает новый MPVolumeView и возвращает 0 или что-то еще. Но если вы создадите MPVolumeView и удерживаете его по свойству, он даст то, что вы хотите.

Как это:

@interface ViewController() 
@property (strong, nonatomic) MPVolumeView *volumeView; 
@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    MPVolumeView *vv = [[MPVolumeView alloc] init]; 
    self.volumeView = vv; 
} 

- (IBAction)volumeUp:(id)sender 
{ 
    //find the volumeSlider 
    UISlider* volumeViewSlider = nil; 
    for (UIView *view in [self.volumeView subviews]){ 
     if ([view.class.description isEqualToString:@"MPVolumeSlider"]){ 
      volumeViewSlider = (UISlider*)view; // volumeViewSlider always 0.000 
      break; 
     } 
    } 

    [volumeViewSlider setValue: [volumeViewSlider value] + 0.0625 animated:YES]; 
    [volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside]; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^