我有一个使用常规Button
视图的 SwiftUI 应用程序,我们的客户经常使用 AssistiveTouch 的 DwellControl 功能。在 iOS 13 上 DwellControl 工作正常,但在 iOS 14 beta 8 上 DwellControl 无法点击这些按钮。
可以用手指轻敲按钮并使用普通鼠标单击,但不能使用 DwellControl 功能。
我曾尝试添加可访问性特征,例如isButton
,但没有任何效果。
有没有人遇到过同样的问题并且有解决方案或任何见解?我知道这是非常利基的,但任何帮助表示赞赏!
编辑:
我用一个非常简单的例子对其进行了测试,包括一个按钮,它工作正常。在我的特定应用程序中,这似乎是某种副作用。
我有几个ZStack
s 显示和隐藏一些视图,如模态框和弹出框。这可能是失败的根源吗?
我不明白的是s可以Button
被点击...Button
我已经尝试Release
并Debug
构建了它并没有什么不同。
当 DwellControl 被激活并且光标位于Button
应点击的那个时,点击也不起作用。但是当光标不在 附近时Button
,点击可以正常工作。
我已通过反馈向 Apple 发送报告。
编辑:
我找到了原因。ScrollView 以某种方式阻止了所有 DwellControl 点击的发生。每当 ScrollView 出现在某个视图中的某个位置时,就会发生这种情况。
最小的例子:
struct ContentView: View {
@State var show = false
var body: some View {
ZStack {
ScrollView {
Button(action: {
print("This should be printed but isn't....")
}, label: {
Text("Button in ScrollView")
})
}
}
}
}
我知道它的利基,但也许有人需要这个。
还有其他组件受到影响并导致相同的行为:
ScrollView
TextField
Slider
Stepper
UIViewRepresentable
对我来说这是一个大问题,因为我们的客户经常使用 DwellControl。
编辑:
这可以在最新的 iOS 14.2 beta 1 中复制:
import SwiftUI
@main
struct TempSwitUIApp: App {
@State private var text: String = "I am a text"
var body: some Scene {
WindowGroup {
Button(action: {
print("\(UUID()) \(self.text)")
}, label: {
Text("Print text to the console")
})
TextField("Hello", text: self.$text)
}
}
}
我更新了我与 Apple 的问题,但还没有收到他们的消息。