AVRoutePickerView显示异常求助:重复出现iPhone选项
AVRoutePickerView 重复显示“iPhone”选项问题排查与解决

这不是AVRoutePickerView的预期行为,属于iOS AVFoundation框架在路由切换流程中的偶现bug,通常是系统切换路由时未正确清理旧路由缓存导致的。
以下是可行的解决方案:
- 手动刷新路由列表:在切换回iPhone路由后,调用
AVAudioSession.sharedInstance().refreshRoute()方法,强制系统重新扫描并更新可用输出设备列表。 - 重置PickerView实例:如果路由刷新无效,可尝试将AVRoutePickerView从视图层级移除后重新添加,或者调用
setNeedsLayout()+layoutIfNeeded()触发UI强制刷新。 - 监听路由变化做后续处理:注册
AVAudioSessionRouteChangeNotification通知,在路由切换完成后延迟执行刷新操作,避免系统缓存未及时更新的问题,示例代码:
NotificationCenter.default.addObserver(forName: AVAudioSession.routeChangeNotification, object: nil, queue: .main) { [weak self] _ in guard let self = self else { return } DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { try? AVAudioSession.sharedInstance().refreshRoute() self.routePickerView.setNeedsLayout() self.routePickerView.layoutIfNeeded() } }
- 核对音频会话配置:确认音频会话类别(如
.playback)和模式设置正确,错误的配置可能导致系统对输出设备的识别出现异常。
内容的提问来源于stack exchange,提问作者Kamal Kumar
相关产品推荐
相关产品推荐

