2016-03-11 4 views
1

Как удалить фокус на NSTextField, если я не фокусируюсь на текстовом поле?NSTextField Focus

У меня есть NSTextField, и я установил действие: Отправлено по редактированию. После нажатия текстового поля FOCUS всегда будет в моем NSTextField, когда я нажимаю другие места в представлении. Кроме того, я использую makeFirstResponder и resignFirstResponder, но все напрасно. Есть идеи?

@IBAction func endOfEditing(sender: NSTextField) { 
    view.window?.makeFirstResponder(nil) 
    view.window?.resignFirstResponder() 
} 

Для иллюстрации, ФОКУС всегда будет находиться в текстовом поле независимо от того, где я нажал. (Даже когда я нажал на кнопку)

enter image description here

Как я могу удалить фокус, когда я нажимаю вне TextField?

enter image description here

+0

Я лично мало знаю о Swift, однако это может быть потому, что вы используете 'view.window?'. Возможно, вам захочется попробовать использовать имя вашего класса ViewController, однако еще раз я очень новичок в Swift. Кроме того, я не уверен, правильно ли понимаю ваш вопрос. Возможно, уточните, как вы хотите, чтобы NSTextField фокусировался, что это значит? – PixelBeaver

+0

Вы должны сделать 'resignFirstResponder()' на вашем текстовом виде – Lee

+0

@Lee Я пробовал 'sender.window? .resignFirstResponder()' но напрасно .. – WeiJay

ответ

0

попробуйте добавить эту функцию к вашему ViewController

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    // I assume your textField call myText 
    myText. resignFirstResponder() 
} 
+0

'override func mouseDown (event: NSEvent) { NSApp.mainWindow! .makeFirstResponder (nil) }' работает при нажатии на представление. Однако это не сработало, если я нажму кнопку. Поступая таким образом, я должен должен makeFirstResponder повсюду на моем контроллере просмотра? Любая лучшая идея? – WeiJay

+0

@WeiJay I nvr использовал mouseDown before, но я просто думаю resignFirstResponder, когда касание на просмотр в порядке, и если вы хотите щелчок на кнопке, вы можете пойти дальше и сделать это с помощью того же кода и функции, когда нажата кнопка ur. – Lee

+0

Но просто подумайте в логике, нет такой логики, если на вашем одном экране есть много кнопок или других элементов, что не очень хорошо для User Experience. Хотя я действительно не уверен, что вы собираетесь делать, но делайте это один за другим, сначала не считайте слишком сложным. – Lee

1

Просто попробуйте это: "? View.window" изменения к «отправителю»

@IBAction func endOfEditing(sender: NSTextField) { 
    sender.makeFirstResponder(nil) 
    sender.resignFirstResponder() 
}