5

Xcode の Interface Builder で、Cocoa-Applescript カスタム Automator アクションを作成しています。インターフェイスに Button と ComboBox メニューがあります。ユーザーがボタンをクリックしたときに、コンボボックスのメニューのコンテンツ値を入力したいと思います。私が作成した

on buttonSentAction_(sender)
    -- set popupMenuContentValues of my parameters() to aList as list
    my popupMenu's addItemsWithObjectValues_(aList)
end buttonSentAction_

Applescriptファイルのハンドラですが、ボタンからファイルの所有者にctrlドラッグすると、接続をドロップするためにファイルの所有者が強調表示されません。私が期待しているのは、それがドロップされ、送信されたアクションを受信するために buttonSentAction_ ハンドラーを選択するオプションが提供されることです。File's Owner を右クリックすると、Applescript コントローラー ファイルで作成した受信アクション ハンドラーが表示されません。(注、そのハンドラー内の ComboBox メニューにデータを入力する正しい行についても、まだ確信が持てません。) コンボボックスをファイルの所有者にリンクするスクリーン グラブ

macosxautomation.com の「FM to Named Text Boxes」サンプル Automator Action プロジェクトには、IB にボタンがあり、ボタンの送信アクションが実際にファイルの所有者に接続されていることを Bindings Inspector で確認できます。 Applescript ファイルには、一致するハンドラーがあります。また、ファイルの所有者のコントローラーは、デフォルトでapplescriptファイルに設定されています。明らかに、Automator Action Project で送信済みアクションを接続することに関する特定の何かが欠けています。何か助けはありますか?

4

3 に答える 3

1

更新:動作するようになりました。重要なのは、Sent Action Handler にバインドする前に、オブジェクトの Outlet を作成する必要があるということでした。

ボタンを削除して、新しい命名スキームでやり直しました。今回は、ファイルの所有者がドラッグを受け取り、すべてが送信されたアクションに接続され、期待どおりに機能します。以前とまったく同じことを行ったので、なぜ最初のアクション ハンドラーが IB で Sent Action を受信できなかったのかは謎です。

以下のサンプルコード:

on searchTypeMatrixWasClicked_(sender)
    -- called with the matrix sent action
    set theIndex to (actionTypeIndex of my parameters()) as integer
    if theIndex is 0 then
    -- do stuff, etc.
    else if theIndex is 1 …
    end if
end

IB のバインディング インスペクター

于 2014-05-26T15:56:02.743 に答える
0

多分これはあなたを助けるでしょう。

コントロール+ファイルの所有者へのドラッグでは何らかの理由で機能しないことはわかっていますが、バインディングインスペクタに移動することでファイルの所有者に接続できます。

ハンドラーに情報を送信したいので、これはまさにあなたがしていることではありませんが、トリックはパラメーター オブジェクトを使用することだと思います。get |keyname| of my parameters() as integer値を保持するキーを作成し、たとえば、(または文字列、リスト) を使用して AppleScript でアクセスする必要があります。on run コマンド ハンドラの構造を参照してください。

以下に、プロパティをポップアップ ボタンに接続する方法の例を示します。

写真を見る: ここに画像の説明を入力 ここに画像の説明を入力

于 2014-05-26T12:49:43.887 に答える