Я определил представление SwiftUI с именем TextView
в одном файле моего проекта Xcode. По сути, это UITextView в SwiftUI. Затем в моем файле ContentView.swift
я вызываю TextView
. Когда я это делаю, я получаю следующую ошибку:
Использование неразрешенного идентификатора TextView
Я уже определил TextView
, поэтому я не знаю, почему я получаю эту ошибку. Самое странное то, что когда я создаю свой код, ошибка временно исчезает. Затем ошибка возвращается вскоре после этого.
Вот мой код:
TextView.swift
import SwiftUI
import UIKit
struct TextView: UIViewRepresentable {
let placeholder: String
@State var text: String = ""
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func makeUIView(context: Context) -> UITextView {
let view = UITextView()
view.isScrollEnabled = true
view.isEditable = true
view.isUserInteractionEnabled = true
view.contentInset = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5)
view.font = UIFont.systemFont(ofSize: 30)
view.text = placeholder
view.textColor = UIColor.lightGray
view.layer.borderWidth = 1
view.layer.borderColor = UIColor.gray.cgColor
view.layer.cornerRadius = 5
view.delegate = context.coordinator
return view
}
func updateUIView(_ uiView: UITextView, context: Context) {
if uiView.textColor != UIColor.lightGray {
uiView.text = text
}
}
}
class Coordinator: NSObject, UITextViewDelegate {
var control: TextView
init(_ control: TextView) {
self.control = control
}
func textViewDidChange(_ textView: UITextView) {
control.text = textView.text
}
func textViewDidBeginEditing(_ textView: UITextView) {
if textView.textColor == UIColor.lightGray {
textView.text = ""
textView.textColor = UIColor.black
}
}
func textViewDidEndEditing(_ textView: UITextView) {
if textView.text.isEmpty {
textView.text = control.placeholder
textView.textColor = UIColor.lightGray
}
}
}
struct TextViewController_Previews: PreviewProvider {
static var previews: some View {
TextView(placeholder: "Placeholder")
}
}
ContentView.swift
import SwiftUI
struct ContentView: View {
var body: some View {
TextView(placeholder: "Hello World!") // my error is showing up here
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Почему происходит ли эта ошибка и как ее исправить? Любая помощь приветствуется.