检测到 WatchOS 7.1 WKLongPressGesture,显示警报,但未触发操作关闭
WatchOS 7.1 WKLongPressGesture detected, alert presented, but action closures not firing
我正在尝试在我的应用程序中实现 WKLongPressGestureRecognizer。识别长按手势并显示警报。但是,当我 select 选项清除 table (我使用的是 Realm)时,警报控制器被关闭,但 take 未被清除。当我尝试通过在代码中添加断点进行调试时,闭包内的代码似乎被完全跳过了。知道我错过了什么吗? (我应该使用警报 sheet 的操作 sheet 吗?)我已经尝试了很多不同的东西。这是我一直用来调试的带有打印语句的代码。当前正在触发闭包内的 None 个打印语句。
@IBAction func handleLongPress(_ sender: Any) {
print("long press pressed")
WKInterfaceDevice.current().play(.click)
let clearAction = WKAlertAction(title: "Clear", style: .destructive) {
print("clear button pressed")
}
let cancelAction = WKAlertAction(title: "Cancel", style: .default) {
print("cancel button pressed")
}
presentAlert(withTitle: "Are you sure?", message: "Action cannot be undone", preferredStyle: .alert, actions: [clearAction, cancelAction])
print("exiting long press")}
感谢您的任何意见或建议。
手势识别器将调用选择器 handleLongPress
两次,一次状态 == began
,一次状态 cancelled
。我发现这会导致您描述的 presentAlert 出现问题。
尝试检查 began
状态:
@IBAction func handleLongPress(_ sender: WKGestureRecognizer) {
guard sender.state == .began else {
return
}
// rest of handleLongPress implementation goes here
}
这应该确保您的警报只显示一次。
我正在尝试在我的应用程序中实现 WKLongPressGestureRecognizer。识别长按手势并显示警报。但是,当我 select 选项清除 table (我使用的是 Realm)时,警报控制器被关闭,但 take 未被清除。当我尝试通过在代码中添加断点进行调试时,闭包内的代码似乎被完全跳过了。知道我错过了什么吗? (我应该使用警报 sheet 的操作 sheet 吗?)我已经尝试了很多不同的东西。这是我一直用来调试的带有打印语句的代码。当前正在触发闭包内的 None 个打印语句。
@IBAction func handleLongPress(_ sender: Any) {
print("long press pressed")
WKInterfaceDevice.current().play(.click)
let clearAction = WKAlertAction(title: "Clear", style: .destructive) {
print("clear button pressed")
}
let cancelAction = WKAlertAction(title: "Cancel", style: .default) {
print("cancel button pressed")
}
presentAlert(withTitle: "Are you sure?", message: "Action cannot be undone", preferredStyle: .alert, actions: [clearAction, cancelAction])
print("exiting long press")}
感谢您的任何意见或建议。
手势识别器将调用选择器 handleLongPress
两次,一次状态 == began
,一次状态 cancelled
。我发现这会导致您描述的 presentAlert 出现问题。
尝试检查 began
状态:
@IBAction func handleLongPress(_ sender: WKGestureRecognizer) {
guard sender.state == .began else {
return
}
// rest of handleLongPress implementation goes here
}
这应该确保您的警报只显示一次。