Wdrażam aplikację Java, która zawiera stos Cofnij / Ponów. Zauważyłem, że niektóre aplikacje (takie jak TextEdit w systemie Mac OS X) pozwalają wybrać opcję „Cofnij wpisywanie” z menu Edycja po wpisaniu tekstu. Chciałbym również zaimplementować tego rodzaju rzeczy w mojej aplikacji, ale bardzo trudno mi znaleźć wytyczne dotyczące tego, jak powinno się to zachowywać.
Z pewnymi próbami i błędami, moje najlepsze przypuszczenie o tym, jak zachowuje się funkcja Cofnij, to:
- Gdy użytkownik wpisze nowy znak (lub wpisze klawisz Delete), scal go z poprzednim elementem wpisywania Cofnij, jeśli znajduje się on na szczycie stosu Cofnij, chyba że wystąpi jedna z następujących sytuacji
- Zawsze twórz nowy element Cofnij, gdy użytkownik kontynuuje pisanie po co najmniej 15 sekundach bezczynności
- Zawsze twórz nowy element Cofnij wpisywanie po tym, jak użytkownik pisze przez dłuższy okres czasu i spełniony jest pewien warunek (nie mogę ustalić, czy był to czas, czy liczba znaków).
- Zawsze twórz nowy element Cofnij wpisywanie, gdy dowolny tekst jest zaznaczony, a następnie usunięty lub nadpisany (zaznaczenie tekstu, nie wprowadzanie zmian, a następnie powrót do pierwotnego punktu wstawiania i kontynuowanie pisania nie powoduje tego)
W praktyce strategia Apple wydaje się działać (przynajmniej działa na mnie, gdy piszę), ale jak zauważyłem w ostatnim punkcie, tak naprawdę nie byłem w stanie zrozumieć zasad. Wygląda na to, że inne programy stosują inne reguły, takie jak Microsoft Word. Google nie odkrył zdefiniowanej listy reguł dla jakiejkolwiek implementacji Cofnij Pisanie i nie natknąłem się na żadne najlepsze praktyki dotyczące tego, jak powinna się zachowywać. Jak więc powinien się zachowywać? A może zależy to tylko od kaprysu programisty?
EDYCJA: Żeby wyjaśnić, nie jestem teraz zainteresowany szczegółami implementacji. Jestem szczególnie ciekawy, czy istnieje wiarygodne odniesienie (np. Najlepsze praktyki lub dokument interfejsu użytkownika) opisujące to lub opis sposobu, w jaki jest on wdrażany w wielu produktach.
124<delete>3
cofnięcie i ponowienie powoduje 123
. Myślę, że zaletą tego jest to, że skutkuje to końcowym stanem tekstu użytkownika, podobnie jak powyższa sugestia.