相关疑难解决方法(0)

SwiftUI UITextView 协调器不起作用

我已将 a 包裹UITextView在 a 中UIViewRepresentable并包含 a Coordinatoras UITextViewDelegate,但未调用事件。我究竟做错了什么?


struct TextView : UIViewRepresentable {
    typealias UIViewType = UITextView

    var placeholder : String

    @Binding var text: String

    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }

    func makeUIView(context: UIViewRepresentableContext<TextView>) -> UITextView {
        let textView = UITextView()
        let placeholderLabel = UILabel()        
        textView.font = UIFont(name: "Helvetica", size: 16)
        placeholderLabel.restorationIdentifier = "Placeholder"
        placeholderLabel.text = self.placeholder
        placeholderLabel.font = UIFont.italicSystemFont(ofSize: (textView.font?.pointSize)!)
        placeholderLabel.sizeToFit()
        textView.addSubview(placeholderLabel)
        placeholderLabel.frame.origin = CGPoint(x: 25, y: (textView.font?.pointSize)! / 2 + 12) …
Run Code Online (Sandbox Code Playgroud)

swiftui

6
推荐指数
2
解决办法
3208
查看次数

用于 UITextView 的 SwiftUI 包装器不更新 ObservedObject

我希望我错了,但我一直无法找到与可编辑 UITextView 等效的 SwiftUI。因此,我使用 UIViewRepresentable 构建了一个。使用 ObservableObject 填充 SwiftUI 文本和我自己的视图有效 - 但在我的视图中所做的更新不会传播到 ObservableObject。我一定在绑定概念中遗漏了一些重要的东西。任何指导将不胜感激。

import SwiftUI
import Combine

struct ContentView: View {

    @ObservedObject var myOText: MyOText

    var body: some View {
        ScrollView {
            VStack {
                Text("This is a bound Text View")
                    .padding(.top, 10)
                    .font(.headline)

                Text(myOText.inTheCourse)
                    .lineLimit(3)
                    .padding()

                Text("This is a multi-line UITextView wrapper:")
                    .font(.headline)

                MultilineTextView(myOText: myOText)
                    .frame(height: 100)
                    .padding()

                Spacer()
            }
        }
    }
}

struct MultilineTextView: UIViewRepresentable {

    @ObservedObject var myOText: MyOText

    func makeUIView(context: Context) -> UITextView {
        let view = …
Run Code Online (Sandbox Code Playgroud)

xcode swiftui combine

4
推荐指数
1
解决办法
2046
查看次数

标签 统计

swiftui ×2

combine ×1

xcode ×1