swiftui - iOS 14 AssistiveTouch Dwell Control 有时不适用于 SwiftUI 按钮
问题描述
我有一个使用常规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 的问题,但还没有收到他们的消息。
解决方案
推荐阅读
- python - 元素周围的绘图框略微偏离
- php - 有没有更简单的方法来做这些搜索过滤器?
- python - 如何确定 N 个布尔 Pandas 列的逻辑真值?
- javascript - 为什么在动态类型语言中使用函数式设计模式并不常见?
- ruby-on-rails - 设计重定向到 Facebook 不起作用
- java - 如何使用 java.util.Base64 而不是 Base64OutputSteam 将字符流解码为字节数组?
- visual-studio - 如何添加运行 Intellitest 和 seviz 所需的命名空间引用?
- flutter - 如何从另一个 StatefulWidget 类颤振中调用 StatefulWidget 类的方法?
- python - 我正在尝试在 replit 中创建一个基本的不和谐机器人,并且我已经为它编写了一个代码,但是当我运行它时它一直向我显示错误
- reactjs - React 路由器不使用上下文 API