2012-03-20 9 views
0

私は本当にこれに感謝しますが、賞金(!)を買う余裕はありません。Lionによってフォーカスが間違って保存されている

ここでは非常に簡単なGUIがあります。ユーザーはソーステキストとターゲットワードを2つのテキストボックスに入力し、ボタンを押します。それからたくさんの旋風が起こり、半秒後に答えが示されます。ユーザーは飽きるまでこれをやり続けてから、アプリを閉じます。当然ながら、アプリが再開すると、フォーカスはソースにあるべきであり、私はこれを達成するためのより純粋な方法が記述されているよりも望ましいと考えています。以下のコメント者は、問題がライオンの永続性のアーチファクトであるという私の感情を確認しました。これは、このような単純なケースでは本当に迷惑です。

シンプルな「コントローラ」クラスのawakeFromNibメソッドで、Lionの下で実行されているXcode 4.3の単純なCocoaアプリケーションで、NSTextFieldをFirst Responder(ウィンドウのmakeFirstResponderを使用)に設定しました。

makeFirstResponderは、再起動後にアプリケーションが初めて読み込まれたときに正常に動作しますが、すべての再実行時に、フォーカスは最後にアクセスされたフィールドに設定されます。 (私はウィンドウのinitialFirstResponderアウトレットを目的のNSTextFieldに接続しようとしましたが、同じ問題がありました)。

最後に、NSApplicationデリゲートから初期化関数を呼び出し、makeFirstResponder呼び出しをそこに置くことで解決しました。

修正がちょっと面倒です - グローバル変数をコントローラに追加し、awakeFromNibで自己に初期化しました。

私は、アプリケーションのCocoa部分がシンプルだという情報を追加しますが、その大部分はWindowsから移植された.cppファイルのSTLの大部分です。

+0

これはLionの永続性によるものです。 –

+0

@Robありがとう。本当のココア人は何を焦点にするのですか?ライオンは修正されていますか? –

答えて

1

IBのウィンドウの属性インスペクタで[復元可能]チェックボックスをオフにします。もちろん、あなたはその位置とサイズを思い出すような修復可能なウィンドウで他の行動を取ることはありません。

+0

これはまさに正しいことです!どうもありがとう。 –

関連する問題