fly*_*yer 46 uigesturerecognizer ios swift
我的 iOS Swift 5 (Xcode 14.1) 应用程序正在运行。上次 Xcode 更新后,我注意到当我在导航控制器内的堆栈中推送带有表视图的特定视图控制器时,我收到以下警告:
[SystemGestureGate] <0x102210320> 手势:系统手势门超时
当我向后滑动以弹出有问题的视图控制器时,它的行为不稳定,有时弹出得很好。我所说的“不稳定”是指有时它会部分显示目标视图控制器,有时会在滑动中间冻结一两秒等。当我尝试再次推入有问题的视图控制器时(出现警告后),它会冻结应用程序。
视图控制器、堆栈、表格和单元格没有自定义手势识别器。
我在应用程序的其他地方没有看到这个警告(包括带有堆栈和表格的视图控制器)。
我的问题是:
我怀疑我正在使用的表有问题,正在进一步调查。
我采取的一些故障排除步骤:
viewWillAppear,但之前viewDidAppear。我期望视图控制器将以与导航控制器中所有其他视图控制器相同的方式滑动来弹出。
小智 24
我今天遇到了同样的错误。它似乎是在长按屏幕底部附近的按钮(或者可能是任何手势处理元素)时发生的。
这是我测试过的一个愚蠢的观点:
struct vertButtons: View {
@State var i = 0
func action() {i=(i+1)%10}
var body: some View {
VStack {
Text(String(i))
.font(.title)
Spacer()
Button(action: {action()}) {
Text("Good Button") // This one is fine
.font(.title)
}
Spacer()
Button(action: {action()}) {
Text("Good Button") // This one is fine
.font(.title)
}
Spacer()
Button(action: {action()}) {
Text("Good Button") // This one is fine
.font(.title)
}
Spacer()
Button(action: {action()}) {
Text("\"Bad\" Button") // Long-press produces "gesture gate timeout"
.font(.title)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
长按“坏”按钮会产生错误(“手势:系统手势门超时”),而对任何“好”按钮执行相同操作则不会。计数器文本用于表明错误消息不会干扰长按释放后执行的按钮操作。
我最好的猜测是,iOS 包含或包含一些功能(“系统手势门”),旨在防止应用程序手势处理和屏幕底部的特殊系统手势之间的干扰,并且最近的 iOS 更新引入了一个错误导致它超时而不是执行其应该执行的操作的功能。
该错误对该测试视图或我的实际应用程序中的预期功能没有影响,所以我想知道您的问题是否还有其他原因。
我希望我能给出更权威的答案,但希望这对您有所帮助。需要注意的是,我对 Swift 和 SwiftUI 非常陌生。