Представленное текстовое поле SwiftUI не увеличивает размер шрифта - PullRequest
1 голос
/ 27 мая 2020

Я использую представимый View Controller в своем приложении SwiftUI для Ma c. Поскольку текстовое поле по умолчанию в SwiftUI (FirstResponder, Placeholder color) очень ограничено, я использую представимый.

Он работает нормально, однако я не могу увеличить размер шрифта TextField, который работает для текстового поля по умолчанию компонент для SwiftUI.

Это мой NSViewController:

class TextFieldController: NSViewController {

  @Binding var text: String
  var isFirstResponder : Bool = true

    init(text: Binding<String>, isFirstResponder : Bool = true) {
    self._text = text
    super.init(nibName: nil, bundle: nil)
  }

  required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
  }

  override func loadView() {

    let textField = NSTextField()
    textField.delegate = self

    textField.font = NSFont(name: "SF Compact Text", size: 19.5) // Points

    self.view = textField
  }

  override func viewDidAppear() {
    self.view.window?.makeFirstResponder(self.view)
  }
}


extension TextFieldController: NSTextFieldDelegate {

  func controlTextDidChange(_ obj: Notification) {
    if let textField = obj.object as? NSTextField {
      self.text = textField.stringValue
    }
  }
}

Это мой Представляемый

struct TextFieldRepresentable: NSViewControllerRepresentable {

  @Binding var text: String

  func makeNSViewController(
    context: NSViewControllerRepresentableContext<TextFieldRepresentable>
  ) -> TextFieldController {
    return TextFieldController(text: $text)
  }

  func updateNSViewController(
    _ nsViewController: TextFieldController,
    context: NSViewControllerRepresentableContext<TextFieldRepresentable>
  ) {
  }
}

В этой строке я пытаюсь изменить шрифт своего TextField, но ничего здесь меняется.

textField.font = NSFont(name: "SF Compact Text", size: 19.5)

1 Ответ

1 голос
/ 27 мая 2020

Назначение шрифта для viewDidAppear у меня сработало.

class TextFieldController: NSViewController {
    @Binding var text: String
    let textField = NSTextField()
    var isFirstResponder : Bool = true

    init(text: Binding<String>, isFirstResponder : Bool = true) {
        self._text = text
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func loadView() {
        textField.delegate = self
        textField.stringValue = text
        self.view = textField
    }

    override func viewDidAppear() {
        self.view.window?.makeFirstResponder(self.view)
        textField.font = NSFont(name: "SF Compact Text", size: 19.5)
    }
}
...