Cocoa - NSSearchFieldDelegate 方法未被调用

标签 cocoa nssearchfield nscontrol

我在 NSVIewConroller View 上有简单的 NSSearchField。并将 NSSearchFIeld 的委托(delegate)连接到 View Controller 。我已经实现了 NSEarcHFieldDelegate 方法,如下所示:

- (void)searchFieldDidStartSearching:(NSSearchField *)sender NS_AVAILABLE_MAC(10_11);
{
    NSLog(@"search field did start: %@", sender.stringValue);
}
- (void)searchFieldDidEndSearching:(NSSearchField *)sender NS_AVAILABLE_MAC(10_11);
{
    NSLog(@"search field did end: %@", sender.stringValue);

}

在开始编辑和结束编辑时不会调用这些方法。但是,如果我实现 NSControl 默认委托(delegate),例如 controlTextDidChange:control:textShouldBeginEditing: 将在相应的事件上调用。

为什么不调用 NSSearchFieldDelegate 方法?..

最佳答案

第1步:你的 Controller 类需要继承自NSSearchFieldDelegate

第2步:实现以下2个方法

    func searchFieldDidStartSearching(sender: NSSearchField){
        print("searchFieldDidStartSearching \(sender.stringValue)")
    }
    func searchFieldDidEndSearching(sender: NSSearchField){
        print("searchFieldDidEndSearching \(sender.stringValue)")
    }

第3步:在viewDidLoad、windowDidLoad、awakeFromNib等中将搜索字段的委托(delegate)设置为 View Controller /窗口 Controller 等

 self.searchField.delegate = self

工作示例如下

//  AppDelegate.swift
//  NSSearchFieldDelegateSampleCode
//  Created by Debasis Das on 27/05/16.
//  Copyright © 2016 Knowstack. All rights reserved.

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate, NSSearchFieldDelegate {

    @IBOutlet weak var window: NSWindow!
    @IBOutlet weak var searchField:NSSearchField!

    func searchFieldDidStartSearching(sender: NSSearchField){
        print("searchFieldDidStartSearching \(sender.stringValue)")
    }
    func searchFieldDidEndSearching(sender: NSSearchField){
        print("searchFieldDidEndSearching \(sender.stringValue)")
    }

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
        self.searchField.delegate = self
    }

    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }


}

关于Cocoa - NSSearchFieldDelegate 方法未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36200956/

相关文章:

cocoa 打开窗口两次

objective-c - NSSearchField 中的可点击搜索图标和褪色背景

objective-c - 自定义 NSTextField 中的 TAB 不会将焦点放在另一个控件上

objective-c - 动态给出一个相当于 NSButton 的 Key

objective-c - -(BOOL)trackMouse :inRect:ofView:untilMouseUp: Is never invoked

objective-c - 如何在 NSBrowser 中突出显示一行?

cocoa - 发送 ETX 到 NSTask

swift - 如何在 NSView 之外使用 addCursorRect?

macos - [NSSearchField 对象] : unrecognized selector sent to instance

swift - 如何在 MacOS 应用程序中执行 Apple Finder -> 文件信息 -> 添加标签功能?