2016-05-28 3 views
0

Я имею несколько текстовые поля, и я не буду ссылаться на метод действия, если пользователь нажимает на текстовое поле, это то, что я в настоящее время:Нажмите событие NSTextField OSX

override func mouseDown(theEvent: NSEvent) { 

} 

для события щелчка.

Это действие, к которому он должен ссылаться, когда текстовое поле нажата:

func myAction(sender: NSView) 
{ 
    print("aktuell: \(sender)") 
    currentObject = sender 
} 

Для кнопок она работает с действием и селектор, но это не работает для текстовых полей ...

button.action = #selector(myAction) 

Просьба привести примеры только в быстрой форме, я знаю, что примеров в obj.-c. Благодаря!

ответ

-1

Понял работать с этим:

1) Создайте подкласс NSTextField.

import Cocoa 

class MyTextField: NSTextField { 

    override func mouseDown(theEvent:NSEvent) { 
     let viewController:ViewController = ViewController() 
     viewController.textFieldClicked() 
    } 
} 

2) С зданием интерфейса, выберите текстовое поле, которое вы хотите иметь фокус на. Перейдите в пользовательский класс на правой панели. Затем установите класс текстового поля на тот, который вы только что создали. **

3) Ниже приведен пример для ViewController.

import Cocoa 

class ViewController: NSViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override var representedObject: AnyObject? { 
     didSet { 
     // Update the view, if already loaded. 
     } 
    } 

    func textFieldClicked() -> Void { 
     print("You've clicked on me!") 
    } 
} 
+0

Вы должны использовать целевое действие внутри 'mouseDown()'. Это вызовет соответствующий метод. Создание нового контроллера представления - очень плохая идея. – clemens

Смежные вопросы