SwiftUI TextField Representable 不增加字体大小
Posted
技术标签:
【中文标题】SwiftUI TextField Representable 不增加字体大小【英文标题】:SwiftUI TextField Representable not increasing Font Size 【发布时间】:2020-05-27 20:22:11 【问题描述】:我在 Mac 的 SwiftUI 应用程序中使用了可表示的视图控制器。由于 SwiftUI(FirstResponder,占位符颜色)中的默认 TextField 非常有限,因此我使用的是可表示的。
它工作正常,但是我无法增加 TextField 的字体大小,这对于 SwiftUI 的默认 TextField 组件确实有效。
这是我的 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】:在 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)
【讨论】:
谢谢,您是否在外部声明了 textField 或者如何在 viewDidAppear() 内部访问它? 你应该在外面声明。 我试过它来声明它,我是否必须在 loadView() 中设置 self.view = self.textField ?那对我不起作用。问题是我将它用作视图,但在这里我需要再次将视图向下转换为 NSTextField 非常感谢!工作完美。大错特错,谢谢!!以上是关于SwiftUI TextField Representable 不增加字体大小的主要内容,如果未能解决你的问题,请参考以下文章
UIPickerView 作为 SwiftUI 中 TextField() 的输入
如何防止 TextField 在 SwiftUI 列表中消失?
如何检测何时点击 TextField? (MacOS 上的 SwiftUI)