私は非ネイティブサウンドフォーマットのオーディオプレーヤーを構築しています。アプリケーションの階層はiPod.appに基づいています。それはUITableView
の数と、ユーザが画面上の音量を変更できるようにMPVolumeView
を使用するUIView
(TrackView
)の番号を持っています。初めてTrackView
が表示されるまで、ハードウェアボタンを使用して音量を変更すると、システムボリュームのオーバーレイが期待どおり(必要に応じて)表示されます。 TrackView
が表示されている場合、これらのオーバーレイは、ハードウェアボタンを使用してボリュームを変更するとき(希望する場合)、MPVolumeView
の更新が表示されないため表示されません。MPVolumeViewを使用した後、システムボリュームオーバーレイを再びオンにするにはどうすればよいですか?
ここで問題があります:TrackView
から戻ってしまうと、ハードウェア音量ボタンを使用しているときにシステム音量オーバーレイが表示されません。私は、MPVolumeView
をプログラムで割り当て、作成して追加して、TrackViewController viewWillAppear:
に入れてから、に同じMPVolumeView
を削除し、解放しないようにしました。
これはiPod.appでは発生しません。 MPVolumeView
を含むビューを一旦バックアウトすると、ハードウェア音量ボタンを使用すると、システム音量がオーバーレイ表示されます。
私には何が欠けていますか?
アップデート2:これは、iOS 3.2の後にいつか導入され、4.2で修正されましたMPVolumeViewのバグに表示されます。
アップデート:私は同じ挙動を示すデフォルトのウィンドウ・ベースのアプリケーション・プロジェクトから、単純な削減を行いました。 MPVolumeViewが見えるようになると、システムボリュームオーバーレイはアプリケーション内で再び見られなくなります。
VolumeAppDelegate.h:
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
@interface VolumeAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
IBOutlet UIView *volumeView;
IBOutlet MPVolumeView *mpVolumeView;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
-(IBAction)toggleVolumeView:(id)sender;
@end
VolumeAppDelegate.m:
#import "VolumeAppDelegate.h"
@implementation VolumeAppDelegate
@synthesize window;
-(IBAction)toggleVolumeView:(id)sender{
if (mpVolumeView == nil){
mpVolumeView = [[MPVolumeView alloc] initWithFrame:volumeView.bounds];
[volumeView addSubview:mpVolumeView];
}
else{
[mpVolumeView removeFromSuperview];
[mpVolumeView release];
mpVolumeView = nil;
}
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window makeKeyAndVisible];
mpVolumeView = nil;
return YES;
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
あなたはXcodeでプロジェクトにMediaPlayerのフレームワークを追加し、へのインターフェイスビルダーでMainWindow.xibを開く必要がありますUIViewとUIButton IBOutletsを追加し、IBActionをUIButtonに接続します。
は、iOS 4.1を実行して触れます。 iOS 3.2のiPadで動作している同じアプリケーションでこの問題が発生することはありません。私は今iPod touchをiOS 4.2にアップデートして、問題が修正されたかどうかを確認しています。 (いずれにしても、4.1のiPod.appはこの動作を示さないので、まだ解決策を探しています。) –
問題はiOS 4.2で修正されているようですが、誰かが以前のバージョンの解決策を持っていれば、まだ興味があります。 –
4.2.1で同様の問題が発生していますが、MPVolumeViewが常に表示されているとは限りませんが、画面上のタップに応答して表示され、非表示になっています。トラックビューの最初の読み込み時にボリュームビューが表示されず、ボリュームボタンの変更に応じてシステムボリュームオーバーレイが表示されます。 MPVolumeViewが表示されると、ビューがビューから削除されて再度追加されるまで、ボリュームオーバーレイは表示されなくなります(MPVolumeViewがその後非表示になっているかどうかに関係なく)。 – prendio2