2012-03-21 10 views
0

私はドキュメントベースのココアアプリを開発しています。 スタートアップインターフェイスは、GarageBandの後にモデル化されています。「新規プロジェクトの作成」と「最近のプロジェクトの参照」の2つの交互のビュー(セグメント化されたコントロールを切り替える)のいずれかを表示するウェルカム画面が表示されます。このビューのそれぞれは、専用のNSViewController(この場合、NewProjectViewControllerおよびRecentProjectsViewController)によって制御されます。NSTextFieldは一度表示した後に入力を受け付けません

これを達成するために、NSDocumentControllerをサブクラス化して、空のドキュメントを作成するのではなく、起動時にこの「ようこそ画面」​​を表示します(ユーザが特定の最小設定を指定するまで空のドキュメントは私のアプリケーションでは意味がありません)。

ユーザーが「新規プロジェクトの作成...」(つまり新しい文書)を選択すると、「新規プロジェクト」タブと同じインターフェイスを「ようこそ」画面に再利用するウィンドウが表示されますNewProjectViewControllerをインスタンス化し、そのビューをウィンドウに追加します。

いずれの場合も、ビューコントローラのビューは.xibから作成されます。ビューコントローラ自体はプログラムによってインスタンス化され、そのビューは-addSubview:を使用してウィンドウの既存のサブビューに追加されます。

NewProjectViewControllerのビューには、いくつかの編集可能なNSTextFieldインスタンスと他のコントロールが含まれています。

問題: ビューコントローラのビュー内のすべてのNSTextFieldインスタンスは、初めてのテキスト入力のみを受け付けます。ビューが表示される2回目以降、テキストを編集しようとするとシステムアラート音が鳴ります。テキストを選択(強調表示)できますが、変更はできません。また、プログラムによってテキストを変更することもできます。

他のコントロール(ポップアップボタン)は問題なく変更できます。

ウェルカム画面ではなく、最初から「新規ドキュメント」ウィンドウを表示しようとしましたが、結果は同じです。初めて動作し、2度目は動作しません。

これは最初のレスポンダの問題ですか?

+0

(など、アプリを終了し、何もしない、最近の文書を開き、新しいドキュメントを作成する)ユーザーが選択した正確に何を参照し、それに応じて行動する各ウィンドウのコントローラーを検査10.6 Snow Leopardを使用します。 –

答えて

0

OK、私はそれを修正しました(ただし、なぜそれがうまくいかなかったのかまだ分かりませんが)。

両方のプロンプト(「ようこそ」画面と「新規プロジェクト」ウィンドウ)をモーダルウィンドウとして実行するように変更しました。

「ようこそ」ウィンドウでは、「終了」では「NSApp abortModal」を、「選択」では「NSApp stopModal」を呼び出します。 「新規プロジェクト」ウィンドウで、「キャンセル」で「NSApp abortModal」を、「作成」で「NSApp stopModal」を呼び出します。ドキュメント・コントローラ側の

、私はまた、

+0

実際、デザインの観点から、モーダルウィンドウは私が以前にやっていたものよりも理にかなっています。 –

+0

私はまだNSTextFieldがどのようなシナリオでシステムアラート音を鳴らしているか知りたいです。それは診断を助けたでしょう。私は役に立たないためにどこでも検索した... –