頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


undoするとなぜか一番最初まで戻る(未解決)


↑こういうツイートをしたんだけど、少し詳細に。

動画ではincreaseというボタンを1回押すたびに値が1増え、その都度undoの処理を
registerUndo(withTarget:handler:)
で登録している。
なのでundoを実行すると値が1減ることを期待するのだが、なぜかある場合では一番最初まで戻ってしまうのだ。


色々試したところ、この不具合?(仕様?)が起きるのはメインのviewControllerに
presentAsModalWindow(_:)
で別なviewControllerを追加してそこで実行した場合のみ発生した。他の追加方法で
presentAsSheet(_:)
present(_:asPopoverRelativeTo:of:preferredEdge:behavior:)
present(_:animator:)
などがあるが、どれも期待通りに動いた。
先のツイートの動画ではわかりやすいようにundoボタンを使っているが⌘+zでも同様。
また、メインのviewControllerのviewで実行しても期待通りに動く。

結局原因わからず、、、presentAsModalWindow(_:)を使うのをやめる方向でアプリ開発は対応するかなあ。
何かわかったら教えてください。



macOS 10.15.6 Catalina
Xcode 11.6
Swift 5.2.4




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.