Исчезает «неразрешенная ошибка идентификатора» в представлении SwiftUI, определенном в другом файле - PullRequest
0 голосов
/ 18 июня 2020

Я определил представление 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()
    }
}

Почему происходит ли эта ошибка и как ее исправить? Любая помощь приветствуется.

...