如何解决iOS 14 AssistiveTouch驻留控件有时无法在SwiftUI按钮上运行
我有一个使用常规Button
视图的SwiftUI应用,我们的客户经常使用AssistiveTouch的DwellControl功能。在iOS 13上,DwellControl运行正常,但在iOS 14 beta 8上,DwellControl无法单击这些按钮。
可以用普通的鼠标(而不是DwellControl功能)用手指点击并单击按钮。
我尝试添加isButton
之类的可访问性特征,但无济于事。
有人遇到过同样的问题,并且有解决方案或任何见解吗?我知道这是一个小众市场,但是可以提供任何帮助!
编辑:
我已经用一个非常简单的示例对其进行了测试,其中包括一个Button,它工作正常。在我的特定应用中,这似乎是某种副作用。
我有几个ZStack
,它们可以显示和隐藏某些视图,如模式和弹出窗口。这可能是失败的根源吗?
我不明白的是,可以轻按并单击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的问题,但尚未收到他们的来信。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。