1

カスタム ビューのビュー階層にNSTextField追加し、ユーザーがそのカスタム ビュー内をクリックしたときの位置を設定します。

ユーザーがウィンドウ内の別のフィールドをクリックしたなどの理由で、テキスト フィールドがファーストレスポンダー ステータスを辞任した場合、NSTextFieldその値をフェッチしてビュー階層から再度削除する必要があります。

NSTextFieldこの単一の目的のためだけにこのテキスト フィールドをサブクラス化することなく、カスタム ビューがファーストレスポンダーの辞任ステータスを所有していることを通知するにはどうすればよいでしょうか?

このNSTextFieldDelegateメソッドcontrol:textShouldEndEditing:は、ユーザーが実際にテキスト フィールドで何かを編集したときにのみ呼び出されるため、機能しません。ユーザーが編集を行っていない場合は、テキスト フィールドを非表示にする必要もあります。

4

2 に答える 2

3

NSTextField がフォーカスを失ったことは、次の方法でキャッチできます。

- (void)controlTextDidEndEditing:(NSNotification *)aNotification
于 2012-11-20T04:05:56.707 に答える
0

同じことを行うもう1つのデリゲートメソッドがあります:-

- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command
{
    if (command==@selector(insertTab:) || (command==@selector(insertBacktab:)))
    {
      //Your Code
    }
    return YES;
}

注:- tab キーと backTab キーでのみ機能します。

于 2014-12-14T04:07:39.637 に答える