L'ho capito.
Se si preme il tasto freccia destra solo millisecondi prima viene visualizzata la finestra di dialogo, quindi default answer
non verrà selezionato e il cursore lampeggiante verrà posizionato dopo il testo predefinito.
Puoi eseguire questa azione in AppleScript in questo modo:
-- Unselect the “default answer” in an input dialog:
tell application "System Events"
key code 124 -- right arrow key
end tell
display dialog "Enter a keyword:" default answer "I do not want this text to be highlighted. "
In teoria, la soluzione di cui sopra non dovrebbe funzionare. In teoria, la pressione dei tasti dovrebbe iniziare e completarsi prima dell'avvio del comando display dialog
. Ma questo metodo funziona, per qualsiasi ragione.
Nota: questo metodo non funzionerà se inserisci key code 124
prima della finestra di dialogo prima del tuo file AppleScript. In questo caso, il mio codice precedente non funzionerà come desiderato e il testo default answer
rimarrà selezionato. (Potrebbe sembrare erroneamente che funzioni correttamente se stai semplicemente eseguendo il codice AppleScript da Script Editor.app o Automator.app, ma non funzionerà correttamente se esegui il file .scpt tramite Fast Scripts, osascript
in Terminal. app, o qualsiasi altro metodo.)
Tuttavia, se display dialog
in questione è la seconda, terza o cinquantesima finestra di dialogo in un file AppleScript, la mia soluzione funziona correttamente. Non chiedermi perché non funzionerà nella prima finestra di dialogo (perché non lo so).
Quindi non hai altra scelta che riorganizzare le finestre di dialogo del file AppleScript in modo che la prima finestra di dialogo non abbia bisogno di avere un default answer
.
Una soluzione alternativa, se la tua finestra di dialogo iniziale deve avere una default answer
che non è selezionata, è inserire una finestra di dialogo che procede automaticamente dopo che è trascorso un breve lasso di tempo. Questa finestra di dialogo dovrebbe essere inserita immediatamente prima del suddetto blocco. Non è una soluzione elegante, ma ecco un codice che funzionerà:
display alert "Please wait..." message "..." buttons ("") giving up after 1
-- I think that "1" is the minimum for "giving up after." I tried "0.5" and the dialog completely stalled.
Finché non precede il dialogo iniziale di una sceneggiatura, ho personalmente trovato il mio metodo affidabile; funziona al 100% del tempo sul mio computer.