在 SwiftUI 中使用自己的 ButtonStyle 在 tvOS 上无法选择按钮

2023-12-13

将标准按钮样式替换为自定义按钮样式后,该按钮在 tvOS 上不再可选(它在 iOS 上按预期工作)。 PlainButtonStyle() 中是否有我缺少的特殊修饰符?或者这是 SwiftUI 中的一个错误?

这是有效的截图:

Button(
    action: { },
    label: { Text("Start") }
).buttonStyle(PlainButtonStyle())

这是一个没有的:

Button(
    action: { },
    label: { Text("Start") }
).buttonStyle(RoundedButtonStyle())

其中 RoundedButtonStyle() 定义为:

struct RoundedButtonStyle: ButtonStyle {
    func makeBody(configuration: Configuration) -> some View {
        configuration.label
            .padding(6)
            .foregroundColor(Color.white)
            .background(Color.blue)
            .cornerRadius(100)
    }
}

如果您创建自己的风格,则必须手动处理焦点。当然,您可以通过不同的方式来做到这一点。

struct RoundedButtonStyle: ButtonStyle {

    let focused: Bool
    func makeBody(configuration: Configuration) -> some View {
        configuration
            .label
            .padding(6)
            .foregroundColor(Color.white)
            .background(Color.blue)
            .cornerRadius(100)
            .shadow(color: .black, radius: self.focused ? 20 : 0, x: 0, y: 0) //  0

    }
}
struct ContentView: View {

    @State private var buttonFocus: Bool = false
    var body: some View {
        VStack {
            Text("Hello World")

            Button(
                action: { },
                label: { Text("Start") }
            ).buttonStyle(RoundedButtonStyle(focused: buttonFocus))
                .focusable(true) { (value) in
                    self.buttonFocus = value
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SwiftUI 中使用自己的 ButtonStyle 在 tvOS 上无法选择按钮 的相关文章

  • SwiftUI 按钮在出现时更改文本大小

    从 GIF 中可以看出 一旦工作表完全打开 完成 按钮文本就会变大 这不仅发生在这个视图中 而且也发生在使用系统图像而不是文本的其他视图中 有谁知道问题的解决方案还是我做错了什么 我仍然对 Swift 记忆犹新 NavigationView
  • 在视图之间传递变量 SwiftUI

    再次基本问题 我想让变量 anytext 对于我要添加的所有未来视图都可见且可访问 在我的例子中 变量将是String 如果是的话 程序会改变吗 Float 我怎样才能将其另存为全局变量 如果我重新启动应用程序 变量会自行删除吗 如何保存即
  • 有没有 SwiftUI 方法来制作文本上标或下标?

    我知道可以像这样应用偏移量Text TM offset x 0 y 7 但是有没有不同或更好的方法来在 SwiftUI 中创建一些上标或下标文本 这是使用的通用方法 baselineOffset Text Company font call
  • SwiftUI - 将数据传递到不同的视图

    我正在开发一个有 4 个不同视图的应用程序 主视图 内容视图 an AddView an EditView 以及一个分离的DataView在一个类中 我通过一个传递所有数据可观察对象到其他意见 在主视图中我有一个项目列表 在里面AddVie
  • 覆盖菜单按钮标签文本颜色 (MacOS SwiftUI)

    我可以覆盖菜单按钮标签的 设置后变暗 颜色吗 下面的 GIF 显示了一个清晰明亮的菜单项 在新选择后会变暗 此系统样式的默认行为 例如 在触控板首选项中 但它不符合可访问性标准 例如 WCAG 要求活动控件中该字体大小的亮度对比度 gt 4
  • 我如何确定视图在 SwiftUI 中的最后一行代码之前完全渲染?

    我有一些代码 它们必须在视图完全渲染和绘制后被触发 因为我们知道视图的 onAppear 或 onChange 它们对于了解视图是否已出现或正在更改很有用 但它们是确保视图已 100 渲染没有用 例如 如果我们在视图中获得 ForEach
  • SwiftUI - 方向更改后,NavigationView 标题和后退按钮被夹在状态栏下

    每当我将设备旋转到横向并再次返回时 顶部NavigationView 包括标题和后退按钮 被剪切在状态栏下方 最小可重现示例 struct ContentView View var body some View NavigationView
  • 滚动 swiftUI 列表时,未调用单元格的任务修改器。怎么修?

    我写了一个异步图像视图 with swiftui 并在列表单元格中使用 AsyncImgView 使用任务修饰符在 Img 出现时从缓存或网络下载 Img 在 iOS16 之前一切正常 但在iOS16我发现当我滚动列表新细胞的AsyncIm
  • 在 swiftUI 中捕获 onLongPressGesture 的 touchDown 位置?

    我正在尝试实现一个自定义上下文菜单 该菜单将在用户触摸的位置长按后出现 我一直无法找到一种方法来捕获 onLongPressGesture 的触地事件的 XY 位置 这就是我开始的地方 struct ExampleView View Sta
  • 自定义“可搜索”搜索字段 SwiftUI iOS 15

    When using the new searchable modifier in SwiftUI on iOS 15 I have no way to customize the Search Bar appearance Specifi
  • 在SwiftUI中,如何高性能地绘制阴影?

    我用 shadow color radius x y 在我的应用程序中绘制阴影 这是我所知道的在 SwiftUI 中绘制应用程序的唯一方法 我用 sheet isPresented content 方法弹出一个视图 其中包含很多阴影 当我调
  • 如何在 SwiftUI 中使用带条件检查的按钮进行导航

    Since 导航按钮不再可用 我如何检查条件导航链接为了导航到另一个视图 NavigationLink destination Dashboard userName self userId password self password is
  • 针对 iOS 10.3 进行编译,但模块“SwiftUICharts”的最低部署目标为 iOS 13.0

    知道如何仅在 iOS 版本超过 iOS 13 时导入 SwiftUICharts 框架吗 我通过 文件 gt Swift 包 gt 添加包依赖项 添加了此框架 我的应用程序目标必须是 iOS 10 我将此框架导入到 swiftui 控制器中
  • .send() 和 .sink() 似乎不再适用于 Xcode 11 Beta 5 中的 PassthroughSubject

    在下面的代码中 当按下按钮时 Test 应该打印在控制台中 但事实并非如此 该事件不是通过发布者发送的 知道 Xcode 11 Beta 5 中的 PassthroughSubject 发生了什么吗 在 Xcode 11 Beta 4 中效
  • 如何在 swiftUI (macOS) 中检测按键按下和释放

    除了标题之外没什么可说的 我希望能够在按下按键和释放按键时 在 macOS 上 在 swiftUI 视图中执行操作 在 swiftUI 中是否有任何好的方法可以做到这一点 如果没有 有什么解决方法吗 不幸的是 键盘事件处理是其中一个令人痛苦
  • SwiftUI:动态“列表”中的“切换”在重用时会破坏其布局?

    我试图展现一种动态List行包含Toggle元素 这Toggle最初布局正确 但是当它们滚动进和滚出视图时 即单元格重用时 它们的布局会中断 最小示例代码 import SwiftUI struct SwitchList View var
  • 调用 SwiftUI 中位置 #11、#12 处的额外参数 [重复]

    这个问题在这里已经有答案了 我在 SwiftUI 中的切换开关上不断收到 调用中位置 11 12 处有额外参数 错误 我见过其他人有 调用中的额外参数 错误 但答案似乎没有帮助 另外 我的错误是 位置 11 12 我还没有看到其他人发生这种
  • 对成员“buildBlock()”的引用不明确

    我一直在尝试使用 Swift UI 为 iOS 13 制作一个应用程序 但我不断收到这个奇怪的错误 对成员 buildBlock 的引用不明确 无论我做什么 错误都不会消失 我尝试一次对代码段进行注释 以查看哪一部分可能导致了问题 但唯一有
  • SwiftUI:状态栏颜色

    有没有办法将 SwiftUI 视图的状态栏更改为白色 我可能错过了一些简单的东西 但我似乎找不到在 SwiftUI 中将状态栏更改为白色的方法 到目前为止我只看到 statusBar hidden Bool 状态栏文本 色调 前景色可以通过
  • 显示键盘时如何在 TextView 下方添加更多填充

    当我在 ScrollView 中有 TextField 并点击它时 键盘会按预期显示 但似乎 TextField 已向上移动到足以显示输入区域 但我希望移动到足够的位置 以便整体可见 否则它看起来像是被剪裁了的 我找不到改变这种行为的方法

随机推荐

  • 如何使用go模板通过FuncMap解析html文件

    我使用以下代码来解析 html 模板 效果很好 func test w http ResponseWriter req http Request data struct A int B int A 2 B 3 t template New
  • ubuntu 中不支持 Major.minor 版本 52.0

    我在用jdk1 8 0 25 当我使用以下命令检查 Java 版本时 java version 它输出以下内容 java version 1 7 0 65 OpenJDK Runtime Environment IcedTea 2 5 3
  • 如何自动将 MySQL 列转换为小写

    是否有一个属性可以添加到列中 以便将其值转换为小写 而不是通过 PHP 对每个值执行此操作 你也许可以通过trigger在插入或更新时触发 我自己 我宁愿创建一个view具有相关列的小写版本 视图的 SQL 可能类似于 SELECT ID
  • 使用列表理解进行素因数分解

    我想仅使用列表理解方法和 或找到给定数字的所有素因数 Haskell 中的 函数组合运算符 我特别想避免递归解决方案 例如 pfactors 120必须产生 2 2 2 3 5 output I tried pfactors n p p l
  • Bash for 循环设置一个变量、它的值并评估它?

    如何使用 for 循环来定义变量 and它的价值 and能够评价一下吗 我无法弄清楚评估部分 但使用 for 循环来定义变量and它的价值似乎有效 具体来说 for i in 1 4 do export my i var path i to
  • 如何使用 ngx-translateservice 翻译打字稿中的方法

    我尝试用这个问题中的所有这些例子来解决我的任务Angular ngx translate 在打字稿中的用法我不知道如何将 TranslateService 连接到我的方法 瑞典语翻译文件se json 无钥匙 NAME Namn 英文翻译文
  • Android自动备份错误

    我正在尝试实现 android 自动备份 Android 6 0 但它不起作用 我得到同样的错误 10 28 22 58 06 980 600 5578 I PFTBT Initiating full data transport back
  • 超时和会话超时问题

    我遇到超时问题 首先 即使 webconfig 中的时间设置为 120 分钟 服务器上每 20 分钟就会发生一次超时 其次 当超时发生时 它会转到登录页面 这是正确的 但重新登录时有时会转到默认页面 有时会转到之前所在的页面 我希望它每次都
  • 为什么缺少媒体类型 application/json 的 writer

    基本上我有一个安静的服务 帖子 它消耗 application json 并产生 application json 该服务的单个参数是一个带注释的 java 对象 我在用org jboss resteasy client ClientReq
  • Pandas 进行分组和求和,但在超过一定数量时创建新行

    我目前有一个数据集 我尝试根据列对行进行分组并对值为整数的列求和 然而 问题是一旦总和达到一定阈值我想创建一个新行 例如 在下面的数据框中 我尝试根据公司名称对行进行分组并总结权重 但是 我不希望权重超过 100 输入数据框 Company
  • 以 Azure Blob 存储块上传视频

    我正在接收分块的文件内容 正如我所读到的 建议使用 Azure blob 存储的最新 nuget 是Azure Storage Blobs 但我找不到任何示例或方法如何分块上传文件 支持吗 我收到的范围为Range标头 我正在用这个快速开始
  • C# XML - 使用 XML Writer 进行多命名空间声明

    我正在尝试使用 C 中的 System Xml Xmlwriter 创建具有多个命名空间的 XML 文档 但在编译时收到以下错误 在同一起始元素标记中 不能将前缀 从 重新定义为 http www acme com BOF 我的完整代码如下
  • Constexpr 指针值

    我试图声明一个初始化为某个常量整数值的 constexpr 指针 但 clang 挫败了我的所有尝试 尝试1 constexpr int x reinterpret cast
  • 如何在 UILabel 中检测并使超链接/提及/主题标签可点击?

    如何在 UILabel 中检测并使其链接 提及 主题标签可点击 或者 是否有任何我可以利用的开源库 我已经看过 Fancy UILabel 它不处理多行文本 TTAttributedLabel 不处理提及 标签 在当前的 iOS 中 没有办
  • 以编程方式抑制大容量存储设备的自动播放

    我需要抑制大容量存储设备的自动播放 这需要通过在后台运行的服务 守护程序以编程方式实现 我知道这可以通过打开一个窗口并处理窗口发送的 queryCancelAutoPlay 消息的应用程序来完成 这可以在没有 GUI 的情况下完成吗 我有需
  • 如何从 UWP 访问 Net Standard 2.0 类库中的内容

    我们有一个引用 UWP 类库的 UWP 应用 UWP 类库有一个 Common 文件夹 其中包含运行时所需的文件 这些文件被标记为 复制为内容 文件被复制到 UWP bin x64 Debug Appx
  • Knockoutjs:ScrollIntoViewTrigger

    我最近遇到了一个问题 虽然我为我解决了它 但我不确定是否没有更好的解决方案 所以我很感激任何评论 问题 我想创建一个 ScrollIntoView 绑定 由于将元素滚动到视图中需要 DOM 元素 因此我编写了一个自定义绑定 然后我想在我愿意
  • 机械化和 Google App Engine

    有人成功使用过吗机械化使用 Google App Engine 应用程序 是的 尽管您需要更改 mechanize py 文件或执行大多数人所做的操作 即下载已更改且已修复的版本 不确定这是否仍然有效 因为它是 2010 年的 以下是针对谷
  • 如何在 Ansible 中为每个剧本登录单独的文件

    我希望在 Ansible 中运行的每个 playbook 有单独的日志文件 而不是 log path 中定义的单个日志文件 据我所知 没有内置的方法可以做到这一点 所以我正在寻找聪明的 黑客 更具体地说 我希望在运行剧本后以 剧本名称 日期
  • 在 SwiftUI 中使用自己的 ButtonStyle 在 tvOS 上无法选择按钮

    将标准按钮样式替换为自定义按钮样式后 该按钮在 tvOS 上不再可选 它在 iOS 上按预期工作 PlainButtonStyle 中是否有我缺少的特殊修饰符 或者这是 SwiftUI 中的一个错误 这是有效的截图 Button actio