3

カスタム NSSearchField からの検索クエリを使用して NSTextView で検索を実装しようとしています。

かなり単純に聞こえますが、機能させることができません。

これまでのところNSTextFinder、 、そのクライアント、および FindBarContainer に関するすべての Apple ドキュメントに目を通しました。TextFinder はコンテナに FindBarView を提供するだけで、コンテナは検索を有効にするとそれを表示します。

クライアント、コンテナー、および TextFinder 間のすべての通信は非表示になります。カスタマイズや干渉なしで「そのまま」動作するように設計されたブラックボックスのように見えます。

しかし- (void)performAction:(NSTextFinderAction)op、NSTextFinder のメソッドはどうでしょうか。カスタム コマンドを TextFinder に送信するためではないでしょうか。

次のように新しい検索文字列を割り当てようとしていました。

    NSPasteboard* pBoard = [NSPasteboard pasteboardWithName:NSFindPboard];
    [pBoard declareTypes:[NSArray arrayWithObjects:NSPasteboardTypeString, NSPasteboardTypeTextFinderOptions, nil] owner:nil];
    [pBoard setString:_theView.searchField.stringValue forType:NSStringPboardType];
    NSDictionary * options = [NSDictionary dictionaryWithObjectsAndKeys:
                              [NSNumber numberWithBool:YES], NSTextFinderCaseInsensitiveKey,
                              [NSNumber numberWithInteger:NSTextFinderMatchingTypeContains], NSTextFinderMatchingTypeKey,
                              nil];

    [pBoard setPropertyList:options forType:NSPasteboardTypeTextFinderOptions];

    [textFinder performAction:NSTextFinderActionSetSearchString];

しかし、それは機能せず、通常の findBar 操作を単に中断します。

私は何か間違ったことをしているという強い気持ちがあります。私が望むのは、自分の NSSearchField に標準の検索機能を持たせることだけです。それは可能ですか?

通常の findBar に満足していない人は私が初めてではないはずです。

あなたの助けは非常に必要であり、感謝しています!

4

1 に答える 1