Как сосредоточиться на текстовом поле при открытии приложения? - PullRequest
0 голосов
/ 19 октября 2018

Как сфокусироваться на текстовом поле при открытии приложения?

Swift 4, Xcode 10, macOS

ОТВЕТ:

Благодаря совету @Willeke в комментариях я сделал это следующим образом:

import Cocoa
import AppKit
import Foundation
let defaults = UserDefaults.standard

class ViewController: NSViewController{

    @IBOutlet weak var addDomain: NSTextField!
    @IBOutlet weak var addSiteField: NSTextField!
    @IBOutlet weak var tableView: NSTableView!
    @IBOutlet weak var removeSite: NSSegmentedControl!

    override func viewDidAppear() {
        super.viewDidAppear()
        addDomain.window?.makeFirstResponder(addDomain)

    }

Потому что: https://developer.apple.com/documentation/appkit/nsresponder/1526750-becomefirstresponder

Используйте NSWindowМетод makeFirstResponder (_:) , а не . Метод становленияFirstResponder () , чтобы сделать объект первым респондентом. Никогда не вызывайте этот метод напрямую.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вы, похоже, не перебираете viewDidAppear , который принадлежит вашему NSViewController , но вы добавляете новую функцию самостоятельно.

Попробуйте использовать:

override func viewDidAppear() {
    // Though the default implementation does nothing as of now, 
    // it is always safe to have the call to the super function in place, 
    // in case you plan to add sub-classes in between.
    super.viewDidAppear()

    addDomain.window?.makeFirstResponder(addDomain)
}
0 голосов
/ 19 октября 2018

В вашем viewController в viewDidAppear

yourTextField.becomeFirstResponder()

Обновление:

macOS реализация требуется с использованием NSWindow makeFirstResponder!

...