undoするとなぜか一番最初まで戻る(未解決)
macOSのUndoManagerで不可解な動きしよる。presentAsSheetでもpresent(_:animator:)でも期待通りやのに、、、 pic.twitter.com/SA7Wl8DfvW
— Tatsuya (@yt) August 5, 2020
↑こういうツイートをしたんだけど、少し詳細に。
動画では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
スポンサーサイト
<< macOSでNSViewの下のボタンをクリックできなくしたい TopPage 1枚の画像からicnsファイルを作成する >>
トラックバック
トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1352-609b9b14
https://ringsbell.blog.fc2.com/tb.php/1352-609b9b14