在Xcode 11 beta 6的iOS 13模拟器中,启用MIDI Network Session时崩溃。
通过didFinishLaunching:WithOptions:在一个新项目中向AppDelegate添加以下行,我能够进行复制:
MIDINetworkSession.default().isEnabled = true
MIDINetworkSession.default().connectionPolicy = .anyone
Run Code Online (Sandbox Code Playgroud)
在iOS 13模拟器中运行时,该应用将在以下第一行崩溃,并在控制台上显示“找不到MIDI网络驱动程序”。iOS 12和更早版本的模拟器不受影响。
奇怪的是,似乎并不是我的所有iOS 13模拟器都受到影响。看来我在Xcode 11 beta 4和更早版本中使用的所有iOS 13模拟器都能正常工作。唯一受影响的模拟器可能是我在Xcode 11 beta 5及以后版本中首次使用的模拟器。
我假设这是一个Beta软件错误,并且已经向Apple提交了该错误。但是我觉得在这里进行记录很聪明,以防其他人遇到它。
更新时间:2019-09-11
对于Xcode 11.0 GM种子(包括新的iPhone 11型号)中的模拟器,这仍然是我的问题。
更新时间:2019-09-30
Xcode 11.1 GM种子中仍然存在问题。我按照Evan的回答中的步骤进行操作,似乎可以解决该问题。
我们的应用程序已prefersStatusBarHidden在其主视图控制器中覆盖以false针对所有情况返回。但是,我在测试 iOS 13 时得到了不同的结果。
在 Xcode 11 (beta 6) 中使用 iOS 13 模拟器时,它们都隐藏了状态栏(这与 Apple 的UIViewController 文档一致)。
在 iOS 12 模拟器中,X 型号 iPhone 在横向隐藏状态栏,但其他 iPhone 类型显示状态栏。
(还要注意,该childForStatusBarHidden属性未在应用程序中的任何位置设置。)
其他人可以确认这种行为吗?如果不是,可能是什么导致了这种不一致?
我从 UIKit 转到 SwiftUI,但在呈现新视图时遇到了 NavigationLink 没有动画的问题。
当以下属性非零时,我已设置视图结构以包含 NavigationLink:
@State private var retrievedDeviceIdentity: Proteus.DeviceIdentity?
Run Code Online (Sandbox Code Playgroud)
Proteus.DeviceIdentity 类型是一个基本数据结构。该属性由成功的异步闭包填充,而不是直接的用户交互。因此,视图结构的设置如下所示,使用 NavigationLink 的destination:isActive:label:初始化程序:
var body: some View {
NavigationView {
VStack {
Form {
// Form building
}
if let deviceIdentity = retrievedDeviceIdentity {
NavigationLink(
destination: AddDeviceLinkDeviceForm(deviceIdentity: deviceIdentity),
isActive: .constant(retrievedDeviceIdentity != nil),
label: {
EmptyView()
}
)
.onDisappear() {
updateSyncButtonEnabledState()
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当retrievedDeviceIdentity填充为非零时,新视图确实会呈现。但是,没有幻灯片过渡到该视图;它会立即改变。在该新视图中时,点击后退按钮确实会幻灯片切换回该视图。
任何想法如何解决这一问题?由于我对 SwiftUI 还很陌生,如果我设置了错误的新结构,那么我也欢迎对此提供反馈。
(我在 macOS Big Sur 11.0.1 上使用 Xcode 12.3。)