問題タブ [nspathcontrol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - 文字列にバインドされたときに NSPathControl がパーセント ('%') 文字をエスケープしないという事実はバグですか?
手順:
環境: OS X 10.6.4 Xcode 3.2.1
- 新しい「アプリケーション」プロジェクトを作成します。
- 提供されたアプリケーション デリゲートを開きます。
- プロパティを追加し
NSString *
ます。 -applicationDidFinishLaunching:
文字列プロパティを に設定します@"/TestString%"
。- NIBを開きます。
NSPathControl
をアプリケーション ウィンドウにドラッグします。NSPathControl
の値バインディングを手順 3 で作成したプロパティにバインドします。- アプリケーションを実行する
- コンソールを表示します。
次のアサーションが表示され、パス コントロールは表示されません。
手順 4 で文字列からパーセント記号を削除すると、アサーションがなくなり、パス コントロールが正しく表示されます。
次の文字を試しましたが、いずれも同じ問題を引き起こしません (二重引用符とバックスラッシュを必ずエスケープしてください)。
いくつかのデバッグを行った後、これを追跡して、パーセントエスケープをサポートするこのメソッドにたどり着きました。たとえば、文字列を使用する@"/Test%20string"
と、結果は「テスト文字列」と表示され、%20 が空白文字に変換されます。
この動作はどこにも文書化されていません。私はそれを見逃していますか?
-[NSBrowser path]
でブラウザのパスをミラーリングするために使用していたため、この問題が発生しましたNSPathControl
。選択したブラウザー セルの内容に % 記号が含まれていると、全体NSPathControl
が失敗します (QA はそのようなものを見つけるのに最適です。彼らのおかげです)。
私の最善の推測は、文字列をNSURL
内部的に変換しようとして失敗し、例外をトリガーする nil を返すことです。これは、文字列の先頭の / を省略すると、次のメッセージが表示されるという事実によって強化されます。
しかし、これにはまだ何かが欠けています。なぜなら-initWithScheme:host:path:
、 は必要な直前のエスケープを追加するものとして文書化されており、呼び出すことができ-initWithScheme:host:path:
、エスケープを追加するものとして文書化されていないメソッド (例: -initWithString
) は、問題を引き起こさない文字、つまり:
, /
,のエスケープが必要であると文書化されているためです#
。;
、および@
。
私はそれについて Apple にバグを報告する予定ですが、これをどこかに文書化し、最初に何かを見逃していないことを確認したかったのです。
解決策を探してこの質問を見つけた人にとって、私の解決策は、 NSPathControl にバインドされたプロパティのゲッターを手動で実装して、 and を使用してエスケープされた文字列を返すことでし-stringByAddingPercentEscapesUsingEncoding:
たNSUTF8StringEncoding
。
誰も何も意見を持っていなかったので、私は先に進んでこれをAppleに提出しました. rdar://8452431.
objective-c - NSPathControlで選択したファイルへのフルパスを取得する
ユーザーがハードディスク上のファイルを選択できるように、アプリにNSPathControlがあります。
使用しようとしています
ただし、これはファイル名のみを出力します。ファイルへのフルパスを取得するにはどうすればよいですか?
前もって感謝します!
cocoa - ドロップダウンnspathcontrol
xcode 4のようにデフォルトのNSPathControlをドロップダウンさせる方法はありますか?デフォルトでは、サブクラス化しないことを意味します
objective-c - NSPathcontrol の代替
NSPathControl (カスタム ルック、項目のメニュー) をカスタマイズしようとしていますが、何時間も経過した後、目的を達成できません。パスを表す別のコントロールを知っていますか?
よろしくお願いいたします。
よろしく、
objective-c - URLを含むNSStringをPOSIXパスに変換します
NSPathControl
ファイルまたはフォルダーをドロップした後、フォルダーまたはファイルへのPOSIXパスを取得する作業を行っています。
私は初心者ですが、次のDestination
ようにコードのコントロール(と呼ばれる)から値を取得することができました。
これは私に次のようなものを与えます
しかし、私はそれをPOSIXパス形式にしたいのです:
code>NSTask実行中のコマンドラインプログラムに渡す必要があるためです。このコンテンツをNSString
URL形式からPOSIXパスに変換する方法について何か提案はありますか?
objective-c - NSPathControl を他のドロップダウン ボックスのように見せるにはどうすればよいですか?
と格闘していNSPathControl
ます。具体的には、ユーザーにタイトルとパスを尋ねるダイアログ (NIB によって生成されたもの) があります。パスは、ユーザーのハード ドライブ上のローカル パスである必要があります。そのため、Xcode 4 では、NSPathControl
. 属性インスペクタで、そのスタイルを「ポップアップ」に設定しました。
これは私が期待するようにかなり機能します。クリックすると、いくつかの一般的なパスまたは現在の選択に関連するパスを含むメニューと、ダイアログ ボックスを開いてパスを選択できる [Choose...] オプションが表示されます。
問題は、境界線やボタンがまったくないため、Cocoa ドロップダウンのように見えないことです。どうすればこれを のように見せることができますNSPopUpButton
か。これはおそらく誰かが期待するものです。
あるいは、私は Cocoa を初めて使用するので、これについて間違った方向に進んでいると言われても構わないと思っています。私が間違った方法で行っている場合、ユーザーにパスを選択させるより良い方法は何ですか?
これが私がやろうとしていることの例です:
パスのドロップダウンが表示されますか? 私はそれがこれらのいずれかのように見えることを期待していたでしょう...
...とはいえ、私は行儀の良い Cocoa アプリを作成しようとしているので、「これを行う正しい方法は何か?」ということが本当に必要です。前もって感謝します。
objective-c - NSPathControl の問題
cocoa で開発しているアプリケーションがあり、NSPathControl
.
コントロールのスタイルを に設定しPopup
、アプリを起動してパス コントロールをクリックすると、設定した URL のコンポーネントを含むポップアップ メニューが表示されます。つまり、次のような URL の場合、次のようにfile://localhost/Applications/Games/
表示されます: My Macbook
, Macintosh HD
, .Applications
Games
ここで、 をクリックするとApplications
、アクションを受け取り、そのアクション[[sender clickedPathComponentCell] URL]
が正しい URL: を返しますfile://localhost/Applications/
。
問題 1: しかし、 をクリックするとMacintosh HD
、末尾に 2 つのスラッシュがある URL が表示されます: file://localhost//
。
問題 2:アイテムfile://localhost//
をクリックしたときに同じ URLが表示されることです。My Macbook
だから、私は2つの質問があります:
Macintosh HD
URLが二重スラッシュで終わるのはなぜですか?Macintosh HD
とのクリックを区別するにはどうすればよいですか? また、Finder がマウントされたボリュームのリストを表示するMy Macbook
への正しい URL は何ですかMy Macbook
(私の macbook では とMacintosh HD
ですBOOTCAMP
)。
「SourceView」というチュートリアルを調べたのですが、 のような項目がなく、が本当に何らかの仮想フォルダとして存在するのか、マウントされているの一覧を取得するために使用するだけなのMy Macbook
かわかりませんでした。ボリューム。My Macbook
NSFileManager
objective-c - NSPathControl setDoubleAction が機能しない
NSPathControl
アプリケーションのビューにを追加しました。ダブルawakeFromNib
クリックアクションを設定します:-
残念ながら、PathControl のダブルクリックは機能しませんが、最初はこれを単純なスタンドアロン テスト アプリケーションとしてテストしました。
他の要素との相互作用があるのではないかと思います。特に、 aとaNSSplitView
を含む a があり、どちらもコントローラー内のセレクターを分離するための Double Click Target バインディングを持っています。NSOutlineView
NSTableView
これらが NSPathControl に影響する理由がわかりません。
セレクターを dClickPath:に接続するとNSPathControl
、PathControl のクリックが機能します。
objective-c - パスの各コンポーネントのポップアップを含む NSPathControl?
Apple のサンプル コードとドキュメントを読むと、たとえばXcode エディタ ウィンドウの「ジャンプ バーNSPathControl
」と同様に動作するように を構成する方法がわかりません。
つまり、パス(または他の種類の階層)を表し、パスの各コンポーネントをクリックして階層をナビゲートするポップアップにします..?
NSPathControlDelegate
クリック音を聞いて一時的なウィンドウにメニューを表示することで、そのような動作を偽造する幸運に恵まれた人はいますか?
OSSの実装が期待される一般的な設計のようですが、そのような運はまだありません..
ios - iOS に相当する NSPathControl
NSPathControl が OSX で行うように動作する iOS (iPhone/iPad) 上のコントロールはありますか? (イベントのルートにノードを動的に追加するには、戻ることができ、イベントのノードを削除します...)