SwiftUI:通过焦点更改启用手表数字表冠
Posted
技术标签:
【中文标题】SwiftUI:通过焦点更改启用手表数字表冠【英文标题】:SwiftUI: enable watch digital crown via focus change 【发布时间】:2021-06-19 14:32:37 【问题描述】:我想提供一个按钮来启用 Apple Watch 数字表冠进行输入。这涉及确保某些事情有重点,可以改变王冠。我有一个小测试器:
当您触摸“启用表冠”按钮时,我想开始更换表冠。
这是我创建的代码:
struct ContentView: View
@State var crownValue = 0.0
@Namespace private var namespace
@Environment(\.resetFocus) var resetFocus
@State var forceFocus = false
var body: some View
ScrollView
VStack
Button("Button")
.focusable(forceFocus)
.prefersDefaultFocus(true, in: namespace)
Text("\(crownValue)")
.digitalCrownRotation($crownValue)
// Goal is for this button to give focus to other button and start capturing
// digital crown changes; but have to touch this button twice to get desired
// effect
Button("Enable Crown")
print("Enabling crown")
forceFocus = true
resetFocus(in: namespace)
.focusScope(namespace)
它有效,但前提是我触摸“启用皇冠”按钮两次!
知道如何实现我的目标吗?此示例的完整源代码位于https://github.com/t9mike/DigitalCrownHelp2。
【问题讨论】:
【参考方案1】:我太复杂了。以下工作正常,将注意力集中在用于启用表冠功能的按钮上:
struct ContentView: View
@State var crownValue = 0.0
var body: some View
ScrollView
Text("\(crownValue)")
Button("Enable Crown")
print("Enabling crown")
.focusable()
.digitalCrownRotation($crownValue)
【讨论】:
以上是关于SwiftUI:通过焦点更改启用手表数字表冠的主要内容,如果未能解决你的问题,请参考以下文章
我们可以使用 Apple Watch 2.0 模拟器推数字表冠吗?