У меня есть контурное представление, которое использует представление Find and Replace, полностью созданное в Interface Builder, которое прекрасно работает в Mojave, но в старых ОС (Yosemite является целью развертывания) ограничения сходят с ума. После десятков и десятков попыток я решаю исследовать другие пути. NSTextFinder выглядит великолепно, и на самом деле представление «Найти» выглядит неплохо ... но здесь проблема: появляется только представление «Найти», даже если я сказал показать «Заменить». Вот пример кода, воспроизводящего проблему:
class ViewController: NSViewController, NSTextFinderClient {
@IBOutlet var outline :NSOutlineView!
var textFinder : NSTextFinder?
override func viewDidLoad() {
super.viewDidLoad()
self.textFinder = NSTextFinder()
self.outline.enclosingScrollView!.findBarPosition = .aboveContent
self.textFinder?.findBarContainer = self.outline.enclosingScrollView
self.textFinder?.client = self
self.textFinder?.incrementalSearchingShouldDimContentView = true
}
@objc func performFindPanelAction(_ sender: Any) {
//self.textFinder?.performAction(NSTextFinder.Action.showFindInterface)
self.textFinder?.performAction(NSTextFinder.Action.showReplaceInterface)
}
}
После этой первой попытки я не знаю, как подключить действия, но для начала было бы здорово узнать, почему не отображается представление «Заменить».