【发布时间】:2020-03-07 22:59:23
【问题描述】:
我想在我的 iPhone 应用上用 Swift 实现摇晃来撤消。
目前它可以工作,但它没有显示要求验证撤消手势的警报(使用“取消”和“撤消”按钮)。我可以自己在正确的位置添加此警报,但我不确定是否应该这样做。有些文章让我认为警报应该在撤消/重做过程中自动出现,所以我错过了一些东西,也许......
以下是相关的代码
在视图控制器中
override func becomeFirstResponder() -> Bool {
return true
}
和
override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
if motion == .motionShake {
snowflake.undoLastAction()
}
}
在我的雪花类中,动作是在数组中插入或修改点,所以我将更改前的值存储在oldPathPoints中,然后
// Action du undo
undoManager?.registerUndo(withTarget: self, handler: { (targetSelf) in
snowflake.pathPoints = oldPathPoints
})
最后是撤销方法
func undoLastAction() {
undoManager?.undo()
createPath()
}
【问题讨论】:
-
在您的
motionEnded()中,您可以显示一个UIAlertController,而不是调用snowflake.undoLastAction(),它将调用撤消函数。 -
@Yonat:我知道这一点,我可以做到,但这是正确的做法,还是使用自动触发警报的 undomanager 的另一种方式,例如 developer.apple.com/design/human-interface-guidelines/ios/… .我没有在 Apple 的文档中找到这个例子的解释
标签: ios swift alert shake nsundomanager