1

私の小さなテストアプリのレイアウトは次のとおりです。

  1. AppDelegateを所有していWindowControllerます。
  2. WindowControllerを所有していCustomTextContainerViewます。
  3. CustomTextContainerViewNSScrollView埋め込みMyCustomTextView(NSTextViewサブクラス)を所有します。

標準のウィンドウ コントローラーと私のウィンドウ コントローラーの両方の xibMainMenuは比較的空です。私のウィンドウコントローラーは次の-windowDidLoadようになります。

- (void)windowDidLoad {
    [super windowDidLoad];
    // create CustomTextContainerView
    [[self window] setContentView:self.customTextContainerView];
}

私がやろうとしているのは、ファーストレスポンダを textView に設定することですが、これを機能させるために考えられることはすべて試しました。

私はそれを作ったので、そのtextViewにCustomTextContainerView転送するだけです。-becomeFirstResponderコンテナーと textView の両方で直接呼び出してみましたが、自動的に最初の応答者になることはできません。

注:ユーザーは引き続きテキスト領域をクリックして入力を開始できますが、入力を開始する前にクリックする必要がないように、ファーストレスポンダーのステータスを自動的に設定しようとしています。私は何が欠けていますか?

4

1 に答える 1

8

ウィンドウのファーストレスポンダを強制するには、次のように呼び出します。

[[self window] makeFirstResponder:self.customTextContainerView];

(これは、最初のレスポンダーのステータスに必要な他のすべてが有効になっていることを前提としています。たとえば、ビューをオーバーライドacceptsFirstResponderして return にすることはできませんNO。)

于 2012-07-15T04:58:05.913 に答える