【问题标题】:How to change the volume in iOS9?iOS9如何改变音量?
【发布时间】:2016-02-04 23:59:55
【问题描述】:

此代码在 iOS 8.0 设备中运行良好,但在 iOS 9.0 中总是将滑块值设为 0.000...

(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。

谢谢!

【问题讨论】:

  • 在 for 循环之后是否 volumeViewSlider 可能为零?

标签: ios objective-c uislider mpvolumeview


【解决方案1】:

在您的代码中,当您调用 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];
}

【讨论】:

    猜你喜欢
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多