カスタム 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 に満足していない人は私が初めてではないはずです。
あなたの助けは非常に必要であり、感謝しています!