Ich implementiere eine Java-App, die einen Undo / Redo-Stack enthält. Ich habe festgestellt, dass Sie in einigen Apps (z. B. TextEdit unter Mac OS X) nach dem Eingeben von Text im Menü Bearbeiten die Option "Eingabe rückgängig machen" auswählen können. Ich würde so etwas gerne auch in meine App implementieren, aber es fällt mir wirklich schwer, Richtlinien zu finden, wie es sich verhalten soll.
Nach einigem Hin und Her schätze ich, wie sich das Rückgängigmachen von TextEdit verhält:
- Wenn der Benutzer ein neues Zeichen eingibt (oder den Löschschlüssel eingibt), fügen Sie es in das vorherige Undo Typing-Element ein, wenn sich eines oben im Undo-Stapel befindet, es sei denn, eine der folgenden Situationen tritt auf
- Erstellen Sie immer ein neues Element zum Rückgängigmachen der Eingabe, nachdem der Benutzer nach mindestens 15 Sekunden Inaktivität die Eingabe fortgesetzt hat
- Erstellen Sie immer ein neues Element zum Rückgängigmachen der Eingabe, nachdem der Benutzer über einen längeren Zeitraum hinweg eine Eingabe getätigt hat und eine bestimmte Bedingung erfüllt ist (es konnte nicht herausgefunden werden, ob dies zeitbasiert oder auf der Anzahl der Zeichen basiert).
- Erstellen Sie immer ein neues Element zum Rückgängigmachen der Eingabe, wenn ein Text ausgewählt und dann gelöscht oder überschrieben wird (wenn Sie Text auswählen, keine Änderung vornehmen, dann zur ursprünglichen Einfügemarke zurückkehren und mit der Eingabe fortfahren, wird dies nicht ausgelöst).
In der Praxis scheint die Strategie von Apple zu funktionieren (zumindest funktioniert sie bei mir, wenn ich tippe), aber wie im letzten Punkt angemerkt, konnte ich die Regeln nicht wirklich herausfinden. Es scheint auch, dass andere Programme andere Regeln befolgen, wie z. B. Microsoft Word. Google hat keine definierte Liste von Regeln für die Implementierung von Undo Typing erstellt, und ich habe keine bewährten Methoden für das Verhalten gefunden. Wie soll es sich also verhalten? Oder liegt es nur an den Launen des Programmierers?
EDIT: Nur zur Verdeutlichung, ich bin im Moment nicht an Implementierungsdetails interessiert. Ich bin besonders neugierig, ob ein maßgeblicher Verweis (z. B. Best Practices oder Benutzeroberflächendokument) vorhanden ist, der dies beschreibt oder beschreibt, wie er in mehreren Produkten implementiert wird.
124<delete>3
Rückgängigmachen und Wiederherstellen führt zu 123
. Ich vermute, der Vorteil davon ist, dass es den endgültigen Zustand des Textes des Benutzers ergibt, ähnlich wie der obige Vorschlag.