Swift: @available up to specific iOS version but not higher

Swift: @available up to specific iOS version but not higher

问题:

我想在 iOS 14 上的 SwiftUI 中使用 accessibilityIdentifier(),但一些代码支持 iOS 13+。

我可以继续使用与 iOS 14+ 版本相同的 API,它在 iOS 13 上什么都不做吗?

例如:

/// How to make this available on pre-iOS 14 only?
extension View {
    func accessibilityIdentifier(_ identifier: String) -> some View {
        if #available(iOS 14.0, macOS 11.0, *) {
                .accessibilityIdentifier(identifier)
        } else {
            self
        }
    }
}

一种可能的方法是创建自己的包装器,例如(使用 Xcode 13.2 测试)

extension View {
    @ViewBuilder
    func accessibility(id identifier: String) -> some View {
        if #available(iOS 14.0, macOS 11.0, *) {
            self.accessibilityIdentifier(identifier)
        } else {
            self.accessibility(identifier: identifier)
        }
    }
}