SwiftUI:仅在 iOS 14+ 上使用“accessibilityIdentifier”

2024-04-04

给出以下代码:

struct CopyButtonStyle: ButtonStyle {

    init() {}

    func makeBody(configuration: Configuration) -> some View {
        let copyIconSize: CGFloat = 24
        return Image(systemName: "doc.on.doc")
            .renderingMode(.template)
            .resizable()
            .frame(width: copyIconSize, height: copyIconSize)
            .accessibilityIdentifier("copy_button")
            .opacity(configuration.isPressed ? 0.5 : 1)
    }
}

我收到以下错误:

“accessibilityIdentifier”仅在 iOS 14.0 或更高版本中可用 在 iOS 14 上

当看着accessibilityIdentifier声明,我发现了这个:

public func accessibilityIdentifier(_ identifier: String) -> ModifiedContent<Self, AccessibilityAttachmentModifier>

Xcode 建议包含整个按钮样式结构或至少包含makeBody函数以使其在 iOS 14+ 上可用。

有没有办法创建附加功能,例如:

func addAccessibilityIdentifierIfAvailable(entryParam ??) -> some View

或类似的,如果accessibilityIdentifier不可用,或者如果可以在该操作系统版本上设置,则返回带有设置标识符的视图。


这里为您提供一个简单的方法:

extension View {
   @ViewBuilder func addAccessibilityIdentifierIfVersionAvailable(identifier: String) -> some View {
        if #available(iOS 14.0, *) { self.accessibilityIdentifier(identifier) }
        else { self } 
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SwiftUI:仅在 iOS 14+ 上使用“accessibilityIdentifier” 的相关文章

随机推荐

  • 标签内运行 JavaScript?

    我有一个处理选项卡切换的 JavaScript 文件 这是来源 var tCount 0 function SwitchToTab id if id lt 0 id gt tCount id 0 for var i 0 i lt tCoun
  • 在 ASP.NET Identity 2 中通过 UserManager.Update() 更新用户

    I use ASP NET Identity 2 in an MVC 5项目 我想更新Student数据通过使用UserManager Update 方法 然而 正如我继承自ApplicationUser类 我需要映射Student to
  • @EnableGlobalMethodSecurity 与 @EnableWebSecurity

    我正在使用 Spring 4 开发 REST API 我想使用 Spring Security 来保护一些端点 但根据我所读到的内容 可以使用以下任一方法来完成 EnableGlobalMethodSecurity or EnableWeb
  • 如何在 iPhone PhoneGap jQuery Mobile 中将文件附加到邮件

    我已经实施了Phone Gap 中使用 jQuery Mobile 的 iPhone 应用程序 作为我的应用程序的一部分 我需要单击 邮件 按钮发送电子邮件 为此我添加了EmailComposer plug in 在 www 文件夹中添加了
  • 是否有一种有效的算法来进行有限数量的整数分区?

    我必须创建一个接受两个整数的方法 让它们成为n and m 并返回有多少种求和方法m得到正数n 例如 像这样的方法调用partition 6 2 应该返回 3 因为有 3 种可能的方法 他们是5 1 4 2 and 3 3 顺便一提 4 2
  • 如何在并行进程(python)中将项目追加到列表中?

    这是我正在使用的更复杂代码的一个非常简单的版本 问题是我想将 method 函数中计算的项目附加到稍后可以显示的某个列表中 但是 当运行此代码时 列表对象为空 而结果数组已满 import multiprocessing as mp glo
  • Chrome 中意外的令牌默认值 ({}).default

    我收到错误 SyntaxError 意外的默认令牌 在 Chrome Opera 中的任何对象上获取或设置属性 默认 时 default 有人可以解释为什么会发生这种情况吗 upd 请大家注意 这对 FF 没有意义 因此在测试时您可能会错过
  • 选择未聚合的变量,功能上依赖于 GROUPing 变量

    背景 我正在一个非常受限的 T SQL 环境中工作 其中只能定义一个对象的 主体 VIEW 大概是 in CREATE VIEW My View AS 在引擎盖下 这是我的 VERSION https learn microsoft com
  • 如何获取多选框的所有选定值?

    我有一个
  • 从列表 PySpark 的列表中创建单行数据框

    我有一个这样的数据data 1 1 1 2 1 3 1 4 1 5 1 6 我想创建一个 PySpark 数据框 我已经使用了 dataframe SQLContext createDataFrame data features 但我总是得
  • 共享主机上的 403 禁止 Laravel

    我有一个共享主机 我正在尝试让我的 laravel 项目在其上运行 我正在使用 voyager 进行管理面板 我将我的应用程序公共文件夹放在 public html 中 并将项目的其余部分放在 public html 的同一级别上 所以它看
  • 从代理服务器后面调用 Web 服务

    我需要在将使用 Web 服务 XML SOAP 服务 的应用程序 C 中添加功能 现在 该应用程序可以 并且大部分 在具有代理服务器的企业环境中使用 我了解 SOAP 服务使用 HTTP 协议 因此应该使用端口 80 该端口通常保持打开状态
  • 如何在这个线性模型中强制删除截距或等效项?

    考虑下表 DB lt data frame Y rnorm 6 X1 c T T F T F F X2 c T F T F T T Y X1 X2 1 1 8376852 TRUE TRUE 2 2 1173739 TRUE FALSE 3
  • Laravel Model->save() 返回 false 但没有错误

    通常当我打电话时Model gt save 它成功地在数据库中创建了新记录 我正在尝试调试没有发生任何事情的情况Model gt save 返回假 我怎样才能知道发生了什么 user new User user gt fields exam
  • Confluence Schema 注册表持久化

    我希望即使服务器重新启动也能够保留具有固定 id 的模式 是否可以将架构保留在架构注册表中 以便在服务器崩溃后使它们具有相同的 id 否则 当模式注册服务器启动时 是否可以对具有固定 id 的模式进行硬编码 这就是模式注册的目的 模式有一个
  • Whatsapp消息自动回复方法

    我在play store上看到很少有应用程序支持WhatsApp的自动回复 我在网上搜索了方法 但我找到的只是这段代码 Uri uri Uri parse smsto 99 Intent i new Intent Intent ACTION
  • Jquery 延迟加载回调

    我目前正在使用Jquery 延迟加载 http www appelsiini net projects lazyload我想知道当我的容器中的所有图像结束加载时 当延迟加载发挥了所有魔力时 是否有一种方法可以进行回调 原因是我正在使用jSc
  • 如何将虚拟机组合到 Aurelia 验证渲染器中的视图中

    我正在尝试使用 aurelia validation 插件对表单执行验证 我正在创建一个自定义验证渲染器 它将更改输入框的颜色并在框旁边放置一个图标 单击或悬停该图标时 会出现一条弹出消息 其中显示实际的错误消息 目前 我正在渲染器中手动渲
  • 在 django 中处理动态 MultipleChoiceField

    到目前为止我看到的所有答案都让我感到困惑 我制作了一个根据传入的参数以及数据库中存储的问题动态构建的表单 这一切都工作正常 注意 它不是一个 ModelForm 只是一个 Form 现在我正在尝试保存用户的响应 我如何迭代他们提交的数据以便
  • SwiftUI:仅在 iOS 14+ 上使用“accessibilityIdentifier”

    给出以下代码 struct CopyButtonStyle ButtonStyle init func makeBody configuration Configuration gt some View let copyIconSize C