2017-01-06 4 views
0

Ich versuche, wenig Dienstprogramm für MacOS (nicht iOS) mit Swift (Neuling) zu machen.Wie kann ich ein fokussiertes Textfeld bearbeiten? (Swift, macOS)

Ich denke, dieses Dienstprogramm wäre Kommandozeilen-Tool von anderen Anwendungen oder Menüleiste Anwendung ausgelöst werden.

Ich habe Funktionen implementiert, die ich wollte, , aber ich habe keine Ahnung, wie fokussiertes Textfeld zu bearbeiten.

z.B. Holen Sie Text aus einem Texteditor (atom, sublime, ... wenn diese App ausgelöst wurde) und nehmen Sie einige Änderungen an diesem Text vor und fügen Sie ihn wieder in den Texteditor ein.

Ich möchte diese App machen funktioniert auf systemweite,

Ich möchte wissen, wie die Dinge zu implementieren unter

  1. Text Holen von derzeit aktiv/fokussierte Textfeld ein.
  2. Löschen Sie den Text des derzeit aktiven/fokussierten Textfelds.
  3. Einfügen von Text in das gerade aktive/fokussierte Textfeld. (Text bedeutet nur ein Wort oder die Zeile vor dem Cursor)

ich dies versuchen, auf Kommandozeilen-Tool und Tastaturereignis (CGEvent) jetzt, die keine gute Idee zu sein scheint.

Bitte helfen!

Antwort

0
  1. Ich glaube, Sie brauchen eine system service zu implementieren, wie in der docs here beschrieben.

    Die relevanten Teile (obwohl Sie alles lesen müssen) sind here im Abschnitt "Senden von Daten an den Dienst" oder "Empfangen von Daten vom Dienst" (es erfolgt mit der Pasteboard).

  2. Als alternative Lösung (vielleicht besser) Sie sollten

+0

Danke, aber es scheint viel schwieriger als ich dachte. –

0

einen Blick auf die Barrierefreiheit in der ApplicationServices framework macOS Nehmen Sie die Verpackung Ihrer App als Anteil App-Erweiterung (siehe here) in Betracht ziehen. Insbesondere die Klassen mit einem "AX" -Präfix (dies sind die Zugänglichkeits-Klassen). Es ist nicht das Schönste, mit dem man arbeiten kann (besonders in Swift), aber man kann damit erreichen, was man will.

Verwandte Themen