[SwiftUI macOS 앱] 여러 줄 텍스트 필드
완성 이미지
여러 줄에 걸쳐 쓸 수 있는 텍스트 필드를 만듭니다. SwiftUI 에 준비되어 있다 TextField
그렇다고 한 줄 밖에 쓸 수 없기 때문에.
코드
ContentView.swiftimport SwiftUI
struct ContentView: View {
@State var text = "default text"
var body: some View {
VStack {
MultiTextView(text: $text)
Text(text)
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
}
struct MultiTextView: NSViewRepresentable {
@Binding var text: String
func makeNSView(context: Context) -> NSTextView {
let view = NSTextView()
view.delegate = context.coordinator
view.string = text
return view
}
func updateNSView(_ nsView: NSTextView, context: Context) {
// この行はいらなかった。
nsView.string = text
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, NSTextViewDelegate {
var multiTextView: MultiTextView
init(_ multiTextView: MultiTextView) {
self.multiTextView = multiTextView
}
func textDidChange(_ notification: Notification) {
guard let text = notification.object as? NSText else {
return
}
self.multiTextView.text = text.string
}
}
}
참고:
ContentView.swift
import SwiftUI
struct ContentView: View {
@State var text = "default text"
var body: some View {
VStack {
MultiTextView(text: $text)
Text(text)
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
}
struct MultiTextView: NSViewRepresentable {
@Binding var text: String
func makeNSView(context: Context) -> NSTextView {
let view = NSTextView()
view.delegate = context.coordinator
view.string = text
return view
}
func updateNSView(_ nsView: NSTextView, context: Context) {
// この行はいらなかった。
nsView.string = text
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, NSTextViewDelegate {
var multiTextView: MultiTextView
init(_ multiTextView: MultiTextView) {
self.multiTextView = multiTextView
}
func textDidChange(_ notification: Notification) {
guard let text = notification.object as? NSText else {
return
}
self.multiTextView.text = text.string
}
}
}
참고:
Reference
이 문제에 관하여([SwiftUI macOS 앱] 여러 줄 텍스트 필드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mochizukikotaro/items/3a69a6af3d3e33986f49텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)