Swift3 如何检查是否按下了NSSearchField的search按钮NL

Swift3 如何检查是否按下了NSSearchField的search按钮NL,swift3,nssearchfield,Swift3,Nssearchfield,如何检查是否按下了NSSearchField搜索按钮? 我需要做什么,而不是单击searchbutton?以下是解决方案 import Cocoa class ViewController: NSViewController { @IBOutlet weak var searchFieldText: NSSearchField! @IBOutlet weak var labelSearchText: NSTextField! @IBAction func sear

如何检查是否按下了NSSearchField搜索按钮?

我需要做什么,而不是单击
searchbutton

以下是解决方案

import Cocoa

class ViewController: NSViewController {

    @IBOutlet weak var searchFieldText: NSSearchField!
    @IBOutlet weak var labelSearchText: NSTextField!

    @IBAction func searchFieldButton(_ sender: NSSearchField) {
        if searchFieldText.stringValue != "" {
            //My code. For example:
            labelSearchText.stringValue = searchFieldText.stringValue
        }

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        let cellMenu = NSMenu(title: "Search Menu")

        var item: NSMenuItem!
        item = NSMenuItem(title: "Clear", action: nil, keyEquivalent: "")
        item.tag = Int(NSSearchFieldClearRecentsMenuItemTag)
        cellMenu.insertItem(item, at: 0)

        item = NSMenuItem.separator()
        item.tag = Int(NSSearchFieldRecentsTitleMenuItemTag)
        cellMenu.insertItem(item, at: 1)

        item = NSMenuItem(title: "Recent Searches", action: nil, keyEquivalent: "")
        item.tag = Int(NSSearchFieldRecentsTitleMenuItemTag)
        cellMenu.insertItem(item, at: 2)

        item = NSMenuItem(title: "Recents", action: nil, keyEquivalent: "")
        item.tag = Int(NSSearchFieldRecentsMenuItemTag)
        cellMenu.insertItem(item, at: 3)
        searchFieldText.searchMenuTemplate = cellMenu
    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }
}
谢谢您的帮助。

这是解决方案

import Cocoa

class ViewController: NSViewController {

    @IBOutlet weak var searchFieldText: NSSearchField!
    @IBOutlet weak var labelSearchText: NSTextField!

    @IBAction func searchFieldButton(_ sender: NSSearchField) {
        if searchFieldText.stringValue != "" {
            //My code. For example:
            labelSearchText.stringValue = searchFieldText.stringValue
        }

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        let cellMenu = NSMenu(title: "Search Menu")

        var item: NSMenuItem!
        item = NSMenuItem(title: "Clear", action: nil, keyEquivalent: "")
        item.tag = Int(NSSearchFieldClearRecentsMenuItemTag)
        cellMenu.insertItem(item, at: 0)

        item = NSMenuItem.separator()
        item.tag = Int(NSSearchFieldRecentsTitleMenuItemTag)
        cellMenu.insertItem(item, at: 1)

        item = NSMenuItem(title: "Recent Searches", action: nil, keyEquivalent: "")
        item.tag = Int(NSSearchFieldRecentsTitleMenuItemTag)
        cellMenu.insertItem(item, at: 2)

        item = NSMenuItem(title: "Recents", action: nil, keyEquivalent: "")
        item.tag = Int(NSSearchFieldRecentsMenuItemTag)
        cellMenu.insertItem(item, at: 3)
        searchFieldText.searchMenuTemplate = cellMenu
    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }
}
谢谢你的帮助。

我想我能解决你的问题

Swift代码如下:

if let cell = searchField.cell as? NSSearchFieldCell {
        let searchButtonCell: NSButtonCell = cell.searchButtonCell!
        let cacelButtonCell: NSButtonCell = cell.cancelButtonCell!
        searchButtonCell.target = self
        cacelButtonCell.target = self
        searchButtonCell.action = #selector(clickSearchButton(_:))
        cacelButtonCell.action = #selector(clickCacelButton(_:))
    }
我想我能解决你的问题

Swift代码如下:

if let cell = searchField.cell as? NSSearchFieldCell {
        let searchButtonCell: NSButtonCell = cell.searchButtonCell!
        let cacelButtonCell: NSButtonCell = cell.cancelButtonCell!
        searchButtonCell.target = self
        cacelButtonCell.target = self
        searchButtonCell.action = #selector(clickSearchButton(_:))
        cacelButtonCell.action = #selector(clickCacelButton(_:))
    }

您需要做的是将
点击手势
操作添加到
ui视图
。看见仅供参考,有一个非常重要但简单的概念,名为:目标操作…目标通常是一个UIVIew…该操作是一个一旦点击视图就会触发的功能。你为什么想知道?@亲爱的,谢谢你提供的信息,但我的问题是针对os x应用程序的,而不是针对iOS。@Willeke我想检查我是否在搜索字段中单击,或在NSSearchField中单击搜索按钮或取消按钮,因为“@IBAction func searchTextField(\uSender:NSSearchField)'无法识别这两个操作。是否要更改按钮的功能?您需要做的是将
点击手势
操作添加到该
ui视图
。看见仅供参考,有一个非常重要但简单的概念,名为:目标操作…目标通常是一个UIVIew…该操作是一个一旦点击视图就会触发的功能。你为什么想知道?@亲爱的,谢谢你提供的信息,但我的问题是针对os x应用程序的,而不是针对iOS。@Willeke我想检查我是否在搜索字段中单击,或在NSSearchField中单击搜索按钮或取消按钮,因为“@IBAction func searchTextField(\uSender:NSSearchField)'无法识别这两个操作。是否要更改按钮的功能?这不是问题的答案。或者问题是“如何更改菜单?”?这不是问题的答案。还是问题“我如何更改菜单?”?